static const byte kEoB2ChargenStartLevelsDOS[60] = {
	0x07, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01,
	0x06, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x01,
	0x07, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x01,
	0x06, 0x06, 0x00, 0x02, 0x06, 0x06, 0x00, 0x02,
	0x06, 0x05, 0x00, 0x02, 0x05, 0x05, 0x06, 0x03,
	0x06, 0x05, 0x00, 0x02, 0x06, 0x06, 0x00, 0x02,
	0x05, 0x05, 0x05, 0x03, 0x05, 0x06, 0x00, 0x02,
	0x06, 0x05, 0x00, 0x02
};

static const ByteProvider kEoB2ChargenStartLevelsDOSProvider = { ARRAYSIZE(kEoB2ChargenStartLevelsDOS), kEoB2ChargenStartLevelsDOS };

static const byte kEoB2ChargenClassMinStatsDOS[90] = {
	0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x0E, 0x0D, 0x0E, 0x00, 0x0C, 0x00, 0x0D, 0x00,
	0x09, 0x11, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x09, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00,
	0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09,
	0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x09,
	0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00,
	0x09, 0x09, 0x09, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x0E, 0x0D, 0x0E, 0x00, 0x00, 0x09, 0x09, 0x00,
	0x00, 0x00
};

static const ByteProvider kEoB2ChargenClassMinStatsDOSProvider = { ARRAYSIZE(kEoB2ChargenClassMinStatsDOS), kEoB2ChargenClassMinStatsDOS };

static const byte kEoB2ChargenRaceMinStatsDOS[36] = {
	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x08,
	0x03, 0x07, 0x06, 0x08, 0x03, 0x04, 0x03, 0x06,
	0x06, 0x03, 0x08, 0x03, 0x03, 0x03, 0x0C, 0x02,
	0x06, 0x07, 0x02, 0x03, 0x08, 0x03, 0x07, 0x06,
	0x03, 0x08, 0x0A, 0x06
};

static const ByteProvider kEoB2ChargenRaceMinStatsDOSProvider = { ARRAYSIZE(kEoB2ChargenRaceMinStatsDOS), kEoB2ChargenRaceMinStatsDOS };

static const uint16 kEoB2ChargenRaceMaxStatsDOS[36] = {
	0x6412, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x6412, 0x0012,
	0x0012, 0x0013, 0x0011, 0x0012, 0x6412, 0x0012, 0x0012, 0x0012,
	0x0012, 0x0012, 0x6412, 0x0012, 0x0012, 0x0011, 0x0013, 0x0010,
	0x6412, 0x0013, 0x0011, 0x0012, 0x0012, 0x0012, 0x0011, 0x0012,
	0x0011, 0x0013, 0x0012, 0x0012
};

static const Uint16Provider kEoB2ChargenRaceMaxStatsDOSProvider = { ARRAYSIZE(kEoB2ChargenRaceMaxStatsDOS), kEoB2ChargenRaceMaxStatsDOS };

static const byte kEoB2SaveThrowTable1DOS[50] = {
	0x10, 0x0E, 0x0D, 0x0B, 0x0A, 0x08, 0x07, 0x05,
	0x04, 0x03, 0x12, 0x10, 0x0F, 0x0D, 0x0C, 0x0A,
	0x09, 0x07, 0x06, 0x05, 0x11, 0x0F, 0x0E, 0x0C,
	0x0B, 0x09, 0x08, 0x06, 0x05, 0x04, 0x14, 0x11,
	0x10, 0x0D, 0x0C, 0x09, 0x08, 0x05, 0x04, 0x04,
	0x13, 0x11, 0x10, 0x0E, 0x0D, 0x0B, 0x0A, 0x08,
	0x07, 0x06
};

static const ByteProvider kEoB2SaveThrowTable1DOSProvider = { ARRAYSIZE(kEoB2SaveThrowTable1DOS), kEoB2SaveThrowTable1DOS };

static const byte kEoB2SaveThrowTable2DOS[25] = {
	0x0E, 0x0D, 0x0B, 0x0A, 0x08, 0x0B, 0x09, 0x07,
	0x05, 0x03, 0x0D, 0x0B, 0x09, 0x07, 0x05, 0x0F,
	0x0D, 0x0B, 0x09, 0x07, 0x0C, 0x0A, 0x08, 0x06,
	0x04
};

static const ByteProvider kEoB2SaveThrowTable2DOSProvider = { ARRAYSIZE(kEoB2SaveThrowTable2DOS), kEoB2SaveThrowTable2DOS };

static const byte kEoB2SaveThrowTable3DOS[35] = {
	0x0A, 0x09, 0x07, 0x06, 0x05, 0x04, 0x02, 0x0E,
	0x0D, 0x0B, 0x0A, 0x09, 0x08, 0x06, 0x0D, 0x0C,
	0x0A, 0x09, 0x08, 0x07, 0x05, 0x10, 0x0F, 0x0D,
	0x0C, 0x0B, 0x0A, 0x08, 0x0F, 0x0E, 0x0C, 0x0B,
	0x0A, 0x09, 0x07
};

static const ByteProvider kEoB2SaveThrowTable3DOSProvider = { ARRAYSIZE(kEoB2SaveThrowTable3DOS), kEoB2SaveThrowTable3DOS };

static const byte kEoB2SaveThrowTable4DOS[30] = {
	0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x0E, 0x0C,
	0x0A, 0x08, 0x06, 0x07, 0x0C, 0x0B, 0x0A, 0x09,
	0x08, 0x04, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B,
	0x0F, 0x0D, 0x0B, 0x09, 0x07, 0x05
};

static const ByteProvider kEoB2SaveThrowTable4DOSProvider = { ARRAYSIZE(kEoB2SaveThrowTable4DOS), kEoB2SaveThrowTable4DOS };

static const byte kEoB2SaveThrwLvlIndexDOS[6] = {
	0x11, 0x15, 0x13, 0x15, 0x11, 0x11
};

static const ByteProvider kEoB2SaveThrwLvlIndexDOSProvider = { ARRAYSIZE(kEoB2SaveThrwLvlIndexDOS), kEoB2SaveThrwLvlIndexDOS };

static const byte kEoB2SaveThrwModDivDOS[6] = {
	0x02, 0x05, 0x03, 0x04, 0x02, 0x02
};

static const ByteProvider kEoB2SaveThrwModDivDOSProvider = { ARRAYSIZE(kEoB2SaveThrwModDivDOS), kEoB2SaveThrwModDivDOS };

static const byte kEoB2SaveThrwModExtDOS[6] = {
	0x0A, 0x05, 0x07, 0x06, 0x0A, 0x0A
};

static const ByteProvider kEoB2SaveThrwModExtDOSProvider = { ARRAYSIZE(kEoB2SaveThrwModExtDOS), kEoB2SaveThrwModExtDOS };

static const char *const kEoB2EnchantedStringDOS[1] = {
	"+%d %s"
};

static const StringListProvider kEoB2EnchantedStringDOSProvider = { ARRAYSIZE(kEoB2EnchantedStringDOS), kEoB2EnchantedStringDOS };

static const char *const kEoB2MenuStringsSpellNoDOS[3] = {
	"6",
	"7",
	"8"
};

static const StringListProvider kEoB2MenuStringsSpellNoDOSProvider = { ARRAYSIZE(kEoB2MenuStringsSpellNoDOS), kEoB2MenuStringsSpellNoDOS };

static const byte kEoB2SpellLevelsMageDOS[35] = {
	0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02,
	0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03,
	0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05,
	0x05, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x08,
	0x00, 0x01, 0x01
};

static const ByteProvider kEoB2SpellLevelsMageDOSProvider = { ARRAYSIZE(kEoB2SpellLevelsMageDOS), kEoB2SpellLevelsMageDOS };

static const byte kEoB2SpellLevelsClericDOS[29] = {
	0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
	0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04,
	0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
	0x06, 0x06, 0x08, 0x08, 0x00
};

static const ByteProvider kEoB2SpellLevelsClericDOSProvider = { ARRAYSIZE(kEoB2SpellLevelsClericDOS), kEoB2SpellLevelsClericDOS };

static const byte kEoB2NumSpellsClericDOS[136] = {
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
	0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00,
	0x04, 0x04, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00,
	0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00,
	0x06, 0x05, 0x05, 0x03, 0x02, 0x02, 0x00, 0x00,
	0x06, 0x06, 0x06, 0x04, 0x02, 0x02, 0x00, 0x00,
	0x06, 0x06, 0x06, 0x05, 0x03, 0x02, 0x01, 0x00,
	0x06, 0x06, 0x06, 0x06, 0x04, 0x02, 0x01, 0x00,
	0x07, 0x07, 0x07, 0x06, 0x04, 0x03, 0x01, 0x00,
	0x07, 0x07, 0x07, 0x07, 0x05, 0x03, 0x02, 0x00
};

static const ByteProvider kEoB2NumSpellsClericDOSProvider = { ARRAYSIZE(kEoB2NumSpellsClericDOS), kEoB2NumSpellsClericDOS };

static const byte kEoB2NumSpellsWisAdjDOS[64] = {
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00
};

static const ByteProvider kEoB2NumSpellsWisAdjDOSProvider = { ARRAYSIZE(kEoB2NumSpellsWisAdjDOS), kEoB2NumSpellsWisAdjDOS };

static const byte kEoB2NumSpellsPalDOS[136] = {
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00
};

static const ByteProvider kEoB2NumSpellsPalDOSProvider = { ARRAYSIZE(kEoB2NumSpellsPalDOS), kEoB2NumSpellsPalDOS };

static const byte kEoB2NumSpellsMageDOS[276] = {
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
	0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00,
	0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00,
	0x04, 0x04, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00,
	0x04, 0x04, 0x04, 0x03, 0x03, 0x00, 0x00, 0x00,
	0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x00, 0x00,
	0x05, 0x05, 0x05, 0x04, 0x04, 0x02, 0x00, 0x00,
	0x05, 0x05, 0x05, 0x04, 0x04, 0x02, 0x01, 0x00,
	0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 0x01, 0x00,
	0x05, 0x05, 0x05, 0x05, 0x05, 0x03, 0x02, 0x01,
	0x05, 0x05, 0x05, 0x05, 0x05, 0x03, 0x03, 0x02,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00
};

static const ByteProvider kEoB2NumSpellsMageDOSProvider = { ARRAYSIZE(kEoB2NumSpellsMageDOS), kEoB2NumSpellsMageDOS };

static const uint32 kEoB2ExperienceTable0DOS[14] = {
	0x00000000, 0x000007D0, 0x00000FA0, 0x00001F40, 0x00003E80, 0x00007D00, 0x0000FA00, 0x0001E848,
	0x0003D090, 0x0007A120, 0x000B71B0, 0x000F4240, 0x001312D0, 0xFFFFFFFF
};

static const Uint32Provider kEoB2ExperienceTable0DOSProvider = { ARRAYSIZE(kEoB2ExperienceTable0DOS), kEoB2ExperienceTable0DOS };

static const uint32 kEoB2ExperienceTable1DOS[14] = {
	0x00000000, 0x000009C4, 0x00001388, 0x00002710, 0x00004E20, 0x00009C40, 0x0000EA60, 0x00015F90,
	0x00020F58, 0x0003D090, 0x0005B8D8, 0x000B71B0, 0x00112A88, 0xFFFFFFFF
};

static const Uint32Provider kEoB2ExperienceTable1DOSProvider = { ARRAYSIZE(kEoB2ExperienceTable1DOS), kEoB2ExperienceTable1DOS };

static const uint32 kEoB2ExperienceTable2DOS[14] = {
	0x00000000, 0x000005DC, 0x00000BB8, 0x00001770, 0x000032C8, 0x00006B6C, 0x0000D6D8, 0x0001ADB0,
	0x00036EE8, 0x0006DDD0, 0x000A4CB8, 0x000DBBA0, 0x00112A88, 0xFFFFFFFF
};

static const Uint32Provider kEoB2ExperienceTable2DOSProvider = { ARRAYSIZE(kEoB2ExperienceTable2DOS), kEoB2ExperienceTable2DOS };

static const uint32 kEoB2ExperienceTable3DOS[14] = {
	0x00000000, 0x000004E2, 0x000009C4, 0x00001388, 0x00002710, 0x00004E20, 0x00009C40, 0x00011170,
	0x0001ADB0, 0x00027100, 0x00035B60, 0x0006B6C0, 0x000A1220, 0xFFFFFFFF
};

static const Uint32Provider kEoB2ExperienceTable3DOSProvider = { ARRAYSIZE(kEoB2ExperienceTable3DOS), kEoB2ExperienceTable3DOS };

static const uint32 kEoB2ExperienceTable4DOS[14] = {
	0x00000000, 0x000008CA, 0x00001194, 0x00002328, 0x00004650, 0x00008CA0, 0x000124F8, 0x000249F0,
	0x000493E0, 0x000927C0, 0x000DBBA0, 0x00124F80, 0x0016E360, 0xFFFFFFFF
};

static const Uint32Provider kEoB2ExperienceTable4DOSProvider = { ARRAYSIZE(kEoB2ExperienceTable4DOS), kEoB2ExperienceTable4DOS };

static const byte kEoB2ExpObjectTlModeDOS[18] = {
	0x00, 0x00, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00,
	0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00,
	0x02, 0x00
};

static const ByteProvider kEoB2ExpObjectTlModeDOSProvider = { ARRAYSIZE(kEoB2ExpObjectTlModeDOS), kEoB2ExpObjectTlModeDOS };

static const byte kEoB2ExpObjectTblIndexDOS[14] = {
	0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

static const ByteProvider kEoB2ExpObjectTblIndexDOSProvider = { ARRAYSIZE(kEoB2ExpObjectTblIndexDOS), kEoB2ExpObjectTblIndexDOS };

static const byte kEoB2ExpObjectShpStartDOS[4] = {
	0x07, 0x0C, 0x0F, 0x12
};

static const ByteProvider kEoB2ExpObjectShpStartDOSProvider = { ARRAYSIZE(kEoB2ExpObjectShpStartDOS), kEoB2ExpObjectShpStartDOS };

static const byte kEoB2ExpObjectTbl1DOS[13] = {
	0x0F, 0x05, 0x0F, 0x05, 0x06, 0x05, 0x06, 0x08,
	0x06, 0x08, 0x06, 0x08, 0x00
};

static const ByteProvider kEoB2ExpObjectTbl1DOSProvider = { ARRAYSIZE(kEoB2ExpObjectTbl1DOS), kEoB2ExpObjectTbl1DOS };

static const byte kEoB2ExpObjectTbl2DOS[10] = {
	0x0F, 0x09, 0x0F, 0x09, 0x02, 0x0A, 0x0B, 0x0A,
	0x0B, 0x00
};

static const ByteProvider kEoB2ExpObjectTbl2DOSProvider = { ARRAYSIZE(kEoB2ExpObjectTbl2DOS), kEoB2ExpObjectTbl2DOS };

static const byte kEoB2ExpObjectTbl3DOS[11] = {
	0x05, 0x03, 0x05, 0x03, 0x03, 0x03, 0x03, 0x0B,
	0x03, 0x0B, 0x00
};

static const ByteProvider kEoB2ExpObjectTbl3DOSProvider = { ARRAYSIZE(kEoB2ExpObjectTbl3DOS), kEoB2ExpObjectTbl3DOS };

static const byte kEoB2ExpObjectYDOS[4] = {
	0x77, 0x67, 0x4F, 0x3F
};

static const ByteProvider kEoB2ExpObjectYDOSProvider = { ARRAYSIZE(kEoB2ExpObjectYDOS), kEoB2ExpObjectYDOS };

static const byte kEoB2SparkDefStepsDOS[8] = {
	0x40, 0x90, 0xE4, 0xB9, 0x6E, 0x1B, 0x06, 0x01
};

static const ByteProvider kEoB2SparkDefStepsDOSProvider = { ARRAYSIZE(kEoB2SparkDefStepsDOS), kEoB2SparkDefStepsDOS };

static const byte kEoB2SparkDefSubStepsDOS[4] = {
	0xC0, 0x30, 0x0C, 0x03
};

static const ByteProvider kEoB2SparkDefSubStepsDOSProvider = { ARRAYSIZE(kEoB2SparkDefSubStepsDOS), kEoB2SparkDefSubStepsDOS };

static const byte kEoB2SparkDefShiftDOS[4] = {
	0x06, 0x04, 0x02, 0x00
};

static const ByteProvider kEoB2SparkDefShiftDOSProvider = { ARRAYSIZE(kEoB2SparkDefShiftDOS), kEoB2SparkDefShiftDOS };

static const byte kEoB2SparkDefAddDOS[8] = {
	0x08, 0x06, 0x1C, 0x14, 0x0D, 0x18, 0x0D, 0x0F
};

static const ByteProvider kEoB2SparkDefAddDOSProvider = { ARRAYSIZE(kEoB2SparkDefAddDOS), kEoB2SparkDefAddDOS };

static const byte kEoB2SparkDefXDOS[6] = {
	0x17, 0x20, 0x17, 0x20, 0x17, 0x20
};

static const ByteProvider kEoB2SparkDefXDOSProvider = { ARRAYSIZE(kEoB2SparkDefXDOS), kEoB2SparkDefXDOS };

static const byte kEoB2SparkDefYDOS[6] = {
	0x02, 0x02, 0x34, 0x34, 0x66, 0x66
};

static const ByteProvider kEoB2SparkDefYDOSProvider = { ARRAYSIZE(kEoB2SparkDefYDOS), kEoB2SparkDefYDOS };

static const uint32 kEoB2SparkOfFlags1DOS[11] = {
	0x40000000, 0x95000000, 0xEA550000, 0xBFAA5400, 0x6AFFA954, 0x15AAFEA9, 0x0055ABFE, 0x000056AB,
	0x00000156, 0x00000001, 0x00000000
};

static const Uint32Provider kEoB2SparkOfFlags1DOSProvider = { ARRAYSIZE(kEoB2SparkOfFlags1DOS), kEoB2SparkOfFlags1DOS };

static const uint32 kEoB2SparkOfFlags2DOS[16] = {
	0xC0000000, 0x30000000, 0x0C000000, 0x03000000, 0x00C00000, 0x00300000, 0x000C0000, 0x00030000,
	0x0000C000, 0x00003000, 0x00000C00, 0x00000300, 0x000000C0, 0x00000030, 0x0000000C, 0x00000003
};

static const Uint32Provider kEoB2SparkOfFlags2DOSProvider = { ARRAYSIZE(kEoB2SparkOfFlags2DOS), kEoB2SparkOfFlags2DOS };

static const byte kEoB2SparkOfShiftDOS[16] = {
	0x1E, 0x1C, 0x1A, 0x18, 0x16, 0x14, 0x12, 0x10,
	0x0E, 0x0C, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x00
};

static const ByteProvider kEoB2SparkOfShiftDOSProvider = { ARRAYSIZE(kEoB2SparkOfShiftDOS), kEoB2SparkOfShiftDOS };

static const byte kEoB2SparkOfXDOS[16] = {
	0x50, 0x70, 0x30, 0x68, 0x20, 0x60, 0x38, 0x78,
	0x80, 0x48, 0x58, 0x28, 0x60, 0x40, 0x70, 0x48
};

static const ByteProvider kEoB2SparkOfXDOSProvider = { ARRAYSIZE(kEoB2SparkOfXDOS), kEoB2SparkOfXDOS };

static const byte kEoB2SparkOfYDOS[16] = {
	0x31, 0x2B, 0x48, 0x17, 0x16, 0x48, 0x35, 0x1B,
	0x43, 0x2E, 0x24, 0x28, 0x38, 0x1C, 0x16, 0x44
};

static const ByteProvider kEoB2SparkOfYDOSProvider = { ARRAYSIZE(kEoB2SparkOfYDOS), kEoB2SparkOfYDOS };

static const byte kEoB2SpellPropertiesDOS[1750] = {
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0xFE, 0x2B, 0x16, 0x2B, 0x60, 0x00, 0xA7,
	0x13, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x04, 0x2C, 0x16, 0x2B, 0xC3, 0x00,
	0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
	0x00, 0x21, 0x00, 0x12, 0x2C, 0x16, 0x2B, 0x9D,
	0x01, 0xA7, 0x13, 0x4C, 0x00, 0x00, 0x00, 0x95,
	0x29, 0xBB, 0x01, 0xA7, 0x13, 0x5F, 0x02, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x1F, 0x2C, 0x16, 0x2B,
	0xD9, 0x01, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00,
	0x00, 0x00, 0xFA, 0x01, 0xA7, 0x13, 0x55, 0x00,
	0x00, 0x00, 0x00, 0x01, 0x00, 0x2D, 0x2C, 0x16,
	0x2B, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00,
	0x00, 0x96, 0x29, 0x00, 0x00, 0x00, 0x00, 0x5C,
	0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x2C,
	0x16, 0x2B, 0x2D, 0x02, 0xA7, 0x13, 0x88, 0x04,
	0x00, 0x00, 0x97, 0x29, 0xE4, 0x02, 0xA7, 0x13,
	0x58, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x43,
	0x2C, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x89,
	0x00, 0x00, 0x00, 0x98, 0x29, 0x00, 0x00, 0x00,
	0x00, 0x4B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x48, 0x2C, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00,
	0x4C, 0x00, 0x00, 0x00, 0x9A, 0x29, 0x00, 0x00,
	0x00, 0x00, 0x5F, 0x20, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x5C, 0x2C, 0x16, 0x2B, 0x2C, 0x00, 0xA7,
	0x13, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x6E, 0x2C, 0x16, 0x2B, 0x00, 0x00,
	0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x5E, 0x40, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x7B, 0x2C, 0x16, 0x2B, 0x2B,
	0x03, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x00, 0x4D, 0x03, 0xA7, 0x13, 0x60, 0x00, 0x00,
	0x00, 0x00, 0x11, 0x00, 0x8D, 0x2C, 0x16, 0x2B,
	0x02, 0x00, 0xA7, 0x13, 0x00, 0x10, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x2C, 0x16,
	0x2B, 0x82, 0x03, 0xA7, 0x13, 0x00, 0x01, 0x00,
	0x00, 0x00, 0x00, 0xA4, 0x03, 0xA7, 0x13, 0x63,
	0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0xA3, 0x2C,
	0x16, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x48, 0x02,
	0x00, 0x00, 0x99, 0x29, 0x00, 0x00, 0x00, 0x00,
	0x64, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xA9,
	0x2C, 0x16, 0x2B, 0xD3, 0x03, 0xA7, 0x13, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x03, 0xA7,
	0x13, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0xB5, 0x2C, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00,
	0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x5E, 0x40, 0x00, 0x00, 0x00, 0x00,
	0x00, 0xCD, 0x2C, 0x16, 0x2B, 0xFA, 0x04, 0xA7,
	0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1C,
	0x05, 0xA7, 0x13, 0x47, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x00, 0xDC, 0x2C, 0x16, 0x2B, 0x4B, 0x05,
	0xA7, 0x13, 0x88, 0x04, 0x00, 0x00, 0x9B, 0x29,
	0x04, 0x06, 0xA7, 0x13, 0x66, 0x00, 0x00, 0x00,
	0x00, 0x01, 0x00, 0xEB, 0x2C, 0x16, 0x2B, 0x2B,
	0x06, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0xF0, 0x2C, 0x16, 0x2B,
	0x89, 0x06, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00,
	0x00, 0x00, 0xAB, 0x06, 0xA7, 0x13, 0x59, 0x00,
	0x00, 0x00, 0x00, 0x41, 0x00, 0xFA, 0x2C, 0x16,
	0x2B, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00,
	0x00, 0x9C, 0x29, 0x00, 0x00, 0x00, 0x00, 0x08,
	0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x2D,
	0x16, 0x2B, 0x3C, 0x07, 0xA7, 0x13, 0x20, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
	0x2D, 0x16, 0x2B, 0x9F, 0x07, 0xA7, 0x13, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00,
	0x2A, 0x2D, 0x16, 0x2B, 0x94, 0x08, 0xA7, 0x13,
	0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x08,
	0xA7, 0x13, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x37, 0x2D, 0x16, 0x2B, 0xD0, 0x09, 0xA7,
	0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x45, 0x2D, 0x16, 0x2B, 0x25, 0x0B,
	0xA7, 0x13, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
	0x00, 0x01, 0x00, 0x52, 0x2D, 0x16, 0x2B, 0x89,
	0x0B, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x61, 0x2D, 0x16, 0x2B,
	0xF1, 0x0B, 0xA7, 0x13, 0x20, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x2D, 0x16,
	0x2B, 0x0D, 0x0C, 0xA7, 0x13, 0x4C, 0x00, 0x00,
	0x00, 0x9D, 0x29, 0x1C, 0x0C, 0xA7, 0x13, 0x49,
	0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x2D,
	0x16, 0x2B, 0x2B, 0x0C, 0xA7, 0x13, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x8C,
	0x2D, 0x16, 0x2B, 0x98, 0x0C, 0xA7, 0x13, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x9C, 0x2D, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0xB2, 0x2D, 0x16, 0x2B, 0x00, 0x00,
	0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x9E, 0x29,
	0x00, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x04, 0x00,
	0x00, 0x00, 0x00, 0xB8, 0x2D, 0x16, 0x2B, 0xDE,
	0x0C, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00,
	0x00, 0x00, 0x01, 0x00, 0xCB, 0x2D, 0x16, 0x2B,
	0xF6, 0x0C, 0xA7, 0x13, 0x20, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x2D, 0x16,
	0x2B, 0x9D, 0x01, 0xA7, 0x13, 0x4C, 0x00, 0x00,
	0x00, 0x95, 0x29, 0xBB, 0x01, 0xA7, 0x13, 0x5F,
	0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x2D,
	0x16, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00,
	0x00, 0x00, 0x9F, 0x29, 0x00, 0x00, 0x00, 0x00,
	0x6E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF,
	0x2D, 0x16, 0x2B, 0x1A, 0x0D, 0xA7, 0x13, 0x39,
	0x00, 0x00, 0x00, 0xA0, 0x29, 0xC9, 0x0D, 0xA7,
	0x13, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x2E, 0x16, 0x2B, 0xEF, 0x0D, 0xA7, 0x13,
	0x08, 0x24, 0x00, 0x00, 0xA1, 0x29, 0xE4, 0x02,
	0xA7, 0x13, 0x63, 0x00, 0x00, 0x00, 0x00, 0x21,
	0x00, 0x0F, 0x2E, 0x16, 0x2B, 0xD3, 0x03, 0xA7,
	0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF5,
	0x03, 0xA7, 0x13, 0x65, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x1B, 0x2E, 0x16, 0x2B, 0x99, 0x0E,
	0xA7, 0x13, 0x28, 0x00, 0x00, 0x00, 0xA2, 0x29,
	0xF2, 0x0E, 0xA7, 0x13, 0x6F, 0x00, 0x20, 0x00,
	0x00, 0x00, 0x00, 0x27, 0x2E, 0x16, 0x2B, 0x08,
	0x0F, 0xA7, 0x13, 0x40, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x33, 0x2E, 0x16, 0x2B,
	0x02, 0x00, 0xA7, 0x13, 0x00, 0x10, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2E, 0x16,
	0x2B, 0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00,
	0x00, 0xA3, 0x29, 0x00, 0x00, 0x00, 0x00, 0x71,
	0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x51, 0x2E,
	0x16, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x00,
	0x00, 0x00, 0xA4, 0x29, 0x00, 0x00, 0x00, 0x00,
	0x5B, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x58,
	0x2E, 0x16, 0x2B, 0x38, 0x0F, 0xA7, 0x13, 0x40,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x69, 0x2E, 0x16, 0x2B, 0x95, 0x0F, 0xA7, 0x13,
	0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x01,
	0x00, 0x7E, 0x2E, 0x16, 0x2B, 0x71, 0x0F, 0xA7,
	0x13, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x92, 0x2E, 0x16, 0x2B, 0xAE, 0x0F,
	0xA7, 0x13, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0xA4, 0x2E, 0x16, 0x2B, 0x00,
	0x00, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x9F,
	0x29, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x08,
	0x00, 0x00, 0x00, 0x00, 0xC4, 0x2E, 0x16, 0x2B,
	0xD1, 0x0F, 0xA7, 0x13, 0x00, 0x01, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x00,
	0x00, 0x00, 0x00, 0x01, 0x00, 0xDA, 0x2E, 0x16,
	0x2B, 0xEA, 0x0F, 0xA7, 0x13, 0x20, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x2E,
	0x16, 0x2B, 0x0E, 0x10, 0xA7, 0x13, 0x00, 0x01,
	0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0xA7, 0x13,
	0x62, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0xFC,
	0x2E, 0x16, 0x2B, 0x4F, 0x10, 0xA7, 0x13, 0x20,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x07, 0x2F, 0x16, 0x2B, 0x2B, 0x0C, 0xA7, 0x13,
	0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x01,
	0x00, 0x13, 0x2F, 0x16, 0x2B, 0x0D, 0x0C, 0xA7,
	0x13, 0x4C, 0x00, 0x00, 0x00, 0x9D, 0x29, 0x1C,
	0x0C, 0xA7, 0x13, 0x49, 0x00, 0x02, 0x00, 0x00,
	0x00, 0x00, 0x1F, 0x2F, 0x16, 0x2B, 0x84, 0x10,
	0xA7, 0x13, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00,
	0x00, 0x01, 0x00, 0x24, 0x2F, 0x16, 0x2B, 0x97,
	0x10, 0xA7, 0x13, 0x20, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x29, 0x2F, 0x16, 0x2B,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x2F, 0x16,
	0x2B, 0xA8, 0x13, 0xA7, 0x13, 0x20, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x2F,
	0x16, 0x2B, 0xE6, 0x10, 0xA7, 0x13, 0x00, 0x10,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F,
	0x2F, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x13, 0xA7,
	0x13, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x50, 0x2F, 0x16, 0x2B, 0x00, 0x00, 0x00, 0x00,
	0x4C, 0x00, 0x00, 0x00, 0xA5, 0x29, 0x00, 0x00,
	0x00, 0x00, 0x5B, 0x00, 0x00, 0x02, 0x00, 0x00,
	0x00, 0x5F, 0x2F, 0x16, 0x2B, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D,
	0x14, 0xA7, 0x13, 0x62, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x60, 0x2F, 0x16, 0x2B, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x6A, 0x12, 0xA7, 0x13, 0x65, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x61, 0x2F, 0x16, 0x2B, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0xF6, 0x11, 0xA7, 0x13, 0x65, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x62, 0x2F, 0x16, 0x2B,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0xE1, 0x12, 0xA7, 0x13, 0x65, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x2F, 0x16,
	0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x43, 0x13, 0xA7, 0x13, 0x65,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

static const ByteProvider kEoB2SpellPropertiesDOSProvider = { ARRAYSIZE(kEoB2SpellPropertiesDOS), kEoB2SpellPropertiesDOS };

static const byte kEoB2MagicFlightPropsDOS[56] = {
	0x04, 0xFF, 0x41, 0x0C, 0x0B, 0xFF, 0x04, 0x06,
	0x0D, 0xFF, 0x7A, 0x09, 0x0F, 0xFF, 0x4A, 0x08,
	0x11, 0x06, 0x38, 0x0A, 0x14, 0x06, 0x7A, 0x0B,
	0x18, 0xFF, 0x4A, 0x08, 0x36, 0xFF, 0x4B, 0x09,
	0x3F, 0xFF, 0x4B, 0x09, 0x41, 0x06, 0x4B, 0x09,
	0x42, 0x06, 0x4B, 0x08, 0x43, 0x06, 0x4B, 0x08,
	0x44, 0x06, 0x4B, 0x08, 0x45, 0x06, 0x4B, 0x08
};

static const ByteProvider kEoB2MagicFlightPropsDOSProvider = { ARRAYSIZE(kEoB2MagicFlightPropsDOS), kEoB2MagicFlightPropsDOS };

static const byte kEoB2TurnUndeadEffectDOS[140] = {
	0x0A, 0x07, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0x0A,
	0x07, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x0D, 0x0A, 0x07,
	0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04,
	0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0x14, 0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00,
	0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x14,
	0x13, 0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00, 0x00,
	0x00, 0xFF, 0xFF, 0x00, 0x63, 0x63, 0x14, 0x13,
	0x10, 0x0D, 0x0A, 0x07, 0x04, 0x00, 0x00, 0x00,
	0x00, 0xFF, 0x63, 0x63, 0x63, 0x14, 0x13, 0x10,
	0x0D, 0x0A, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00,
	0x63, 0x63, 0x63, 0x63, 0x14, 0x13, 0x10, 0x0D,
	0x0A, 0x07, 0x07, 0x04, 0x04, 0x00, 0x63, 0x63,
	0x63, 0x63, 0x63, 0x14, 0x13, 0x10, 0x0D, 0x0A,
	0x0A, 0x07, 0x07, 0x04
};

static const ByteProvider kEoB2TurnUndeadEffectDOSProvider = { ARRAYSIZE(kEoB2TurnUndeadEffectDOS), kEoB2TurnUndeadEffectDOS };

static const byte kEoB2BurningHandsDestDOS[32] = {
	0x02, 0x03, 0x04, 0x01, 0x02, 0x05, 0x00, 0x00,
	0x00, 0x02, 0x04, 0x01, 0x03, 0x05, 0x00, 0x00,
	0x00, 0x01, 0x04, 0x02, 0x03, 0x05, 0x00, 0x00,
	0x01, 0x03, 0x04, 0x00, 0x02, 0x05, 0x00, 0x00
};

static const ByteProvider kEoB2BurningHandsDestDOSProvider = { ARRAYSIZE(kEoB2BurningHandsDestDOS), kEoB2BurningHandsDestDOS };

static const byte kEoB2ConeOfColdDest1DOS[7] = {
	0xE0, 0xC0, 0xC1, 0xBF, 0xA0, 0x9F, 0xA1
};

static const ByteProvider kEoB2ConeOfColdDest1DOSProvider = { ARRAYSIZE(kEoB2ConeOfColdDest1DOS), kEoB2ConeOfColdDest1DOS };

static const byte kEoB2ConeOfColdDest2DOS[7] = {
	0x01, 0x02, 0xE2, 0x22, 0x03, 0xE3, 0x23
};

static const ByteProvider kEoB2ConeOfColdDest2DOSProvider = { ARRAYSIZE(kEoB2ConeOfColdDest2DOS), kEoB2ConeOfColdDest2DOS };

static const byte kEoB2ConeOfColdDest3DOS[7] = {
	0x20, 0x40, 0x3F, 0x41, 0x60, 0x5F, 0x61
};

static const ByteProvider kEoB2ConeOfColdDest3DOSProvider = { ARRAYSIZE(kEoB2ConeOfColdDest3DOS), kEoB2ConeOfColdDest3DOS };

static const byte kEoB2ConeOfColdDest4DOS[7] = {
	0xFF, 0xFE, 0x1E, 0xDE, 0xFD, 0x1D, 0xDD
};

static const ByteProvider kEoB2ConeOfColdDest4DOSProvider = { ARRAYSIZE(kEoB2ConeOfColdDest4DOS), kEoB2ConeOfColdDest4DOS };

static const byte kEoB2ConeOfColdGfxTblDOS[8] = {
	0x0F, 0x09, 0x0F, 0x09, 0x02, 0x0A, 0x02, 0x00
};

static const ByteProvider kEoB2ConeOfColdGfxTblDOSProvider = { ARRAYSIZE(kEoB2ConeOfColdGfxTblDOS), kEoB2ConeOfColdGfxTblDOS };

static const byte kEoB2DscDoorShapeIndexDOS[53] = {
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
	0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x01
};

static const ByteProvider kEoB2DscDoorShapeIndexDOSProvider = { ARRAYSIZE(kEoB2DscDoorShapeIndexDOS), kEoB2DscDoorShapeIndexDOS };

static const byte kEoB2WllFlagPresetDOS[25] = {
	0x07, 0x00, 0x40, 0xA8, 0x88, 0x88, 0x88, 0x9F,
	0xA8, 0x88, 0x88, 0x88, 0x9F, 0xA8, 0x88, 0x88,
	0x88, 0x9F, 0xA8, 0x88, 0x88, 0x88, 0x9F, 0x03,
	0x03
};

static const ByteProvider kEoB2WllFlagPresetDOSProvider = { ARRAYSIZE(kEoB2WllFlagPresetDOS), kEoB2WllFlagPresetDOS };

static const uint16 kEoB2DscShapeCoordsDOS[180] = {
	0xFF91, 0xFFC1, 0xFFA1, 0xFFC1, 0xFF75, 0xFFC5, 0xFF8B, 0xFFC5,
	0xFF88, 0xFFC3, 0xFFB4, 0xFFC1, 0xFFC4, 0xFFC1, 0xFFA1, 0xFFC5,
	0xFFB6, 0xFFC5, 0xFFB0, 0xFFC3, 0xFFD5, 0xFFC1, 0xFFE5, 0xFFC1,
	0xFFCB, 0xFFC5, 0xFFE1, 0xFFC5, 0xFFD8, 0xFFC3, 0xFFF8, 0xFFC1,
	0x0008, 0xFFC1, 0xFFF6, 0xFFC5, 0x000A, 0xFFC5, 0x0000, 0xFFC3,
	0x001B, 0xFFC1, 0x002B, 0xFFC1, 0x001F, 0xFFC5, 0x0035, 0xFFC5,
	0x0028, 0xFFC3, 0x003C, 0xFFC1, 0x004C, 0xFFC1, 0x004A, 0xFFC5,
	0x005F, 0xFFC5, 0x0050, 0xFFC3, 0x005F, 0xFFC1, 0x006F, 0xFFC1,
	0x0075, 0xFFC5, 0x008B, 0xFFC5, 0x0078, 0xFFC3, 0xFF8A, 0xFFCB,
	0xFFA4, 0xFFCB, 0xFF68, 0xFFD3, 0xFF88, 0xFFD3, 0xFF8A, 0xFFCE,
	0xFFBE, 0xFFCB, 0xFFD8, 0xFFCB, 0xFFAC, 0xFFD3, 0xFFCD, 0xFFD3,
	0xFFC5, 0xFFCE, 0xFFF3, 0xFFCB, 0x000D, 0xFFCB, 0xFFF0, 0xFFD3,
	0x0010, 0xFFD3, 0x0000, 0xFFCE, 0x0028, 0xFFCB, 0x0042, 0xFFCB,
	0x0033, 0xFFD3, 0x0054, 0xFFD3, 0x003B, 0xFFCE, 0x005C, 0xFFCB,
	0x0076, 0xFFCB, 0x0078, 0xFFD3, 0x0098, 0xFFD3, 0x0076, 0xFFCE,
	0xFF92, 0xFFDD, 0xFFBD, 0xFFDD, 0xFF74, 0xFFEA, 0xFFAD, 0xFFEA,
	0xFF9E, 0xFFE2, 0xFFEA, 0xFFDD, 0x0016, 0xFFDD, 0xFFE5, 0xFFEA,
	0x001B, 0xFFEA, 0x0000, 0xFFE2, 0x0043, 0xFFDD, 0x006E, 0xFFDD,
	0x0053, 0xFFEA, 0x008C, 0xFFEA, 0x0062, 0xFFE2, 0xFF80, 0xFFFC,
	0x0080, 0xFFFC, 0xFF80, 0xFFBE, 0x0080, 0xFFBE, 0x0080, 0x0000,
	0xFFDA, 0xFFFC, 0x0026, 0xFFFC, 0xFFDA, 0xFFBE, 0x0026, 0xFFBE,
	0x0000, 0x0000, 0xFF80, 0xFFFC, 0x0080, 0xFFFC, 0xFF80, 0xFFBE,
	0x0080, 0xFFBE, 0x0080, 0x0000
};

static const Uint16Provider kEoB2DscShapeCoordsDOSProvider = { ARRAYSIZE(kEoB2DscShapeCoordsDOS), kEoB2DscShapeCoordsDOS };

static const byte kEoB2DscDoorScaleOffsDOS[53] = {
	0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
	0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D,
	0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x33, 0x34
};

static const ByteProvider kEoB2DscDoorScaleOffsDOSProvider = { ARRAYSIZE(kEoB2DscDoorScaleOffsDOS), kEoB2DscDoorScaleOffsDOS };

static const byte kEoB2DscDoorScaleMult1DOS[4] = {
	0x08, 0x0C, 0x12, 0x00
};

static const ByteProvider kEoB2DscDoorScaleMult1DOSProvider = { ARRAYSIZE(kEoB2DscDoorScaleMult1DOS), kEoB2DscDoorScaleMult1DOS };

static const byte kEoB2DscDoorScaleMult2DOS[4] = {
	0x00, 0x02, 0x04, 0x00
};

static const ByteProvider kEoB2DscDoorScaleMult2DOSProvider = { ARRAYSIZE(kEoB2DscDoorScaleMult2DOS), kEoB2DscDoorScaleMult2DOS };

static const byte kEoB2DscDoorScaleMult3DOS[4] = {
	0x05, 0x08, 0x0C, 0x00
};

static const ByteProvider kEoB2DscDoorScaleMult3DOSProvider = { ARRAYSIZE(kEoB2DscDoorScaleMult3DOS), kEoB2DscDoorScaleMult3DOS };

static const byte kEoB2DscDoorType5OffsDOS[6] = {
	0x05, 0x03, 0x01, 0x05, 0x03, 0x01
};

static const ByteProvider kEoB2DscDoorType5OffsDOSProvider = { ARRAYSIZE(kEoB2DscDoorType5OffsDOS), kEoB2DscDoorType5OffsDOS };

static const byte kEoB2DscDoorY1DOS[4] = {
	0x3B, 0x47, 0x56, 0x00
};

static const ByteProvider kEoB2DscDoorY1DOSProvider = { ARRAYSIZE(kEoB2DscDoorY1DOS), kEoB2DscDoorY1DOS };

static const byte kEoB2DscDoorY2DOS[4] = {
	0x1F, 0x18, 0x0F, 0x00
};

static const ByteProvider kEoB2DscDoorY2DOSProvider = { ARRAYSIZE(kEoB2DscDoorY2DOS), kEoB2DscDoorY2DOS };

static const byte kEoB2DscDoorFrameY1DOS[4] = {
	0x1E, 0x18, 0x10, 0x00
};

static const ByteProvider kEoB2DscDoorFrameY1DOSProvider = { ARRAYSIZE(kEoB2DscDoorFrameY1DOS), kEoB2DscDoorFrameY1DOS };

static const byte kEoB2DscDoorFrameY2DOS[4] = {
	0x3B, 0x47, 0x56, 0x78
};

static const ByteProvider kEoB2DscDoorFrameY2DOSProvider = { ARRAYSIZE(kEoB2DscDoorFrameY2DOS), kEoB2DscDoorFrameY2DOS };

static const byte kEoB2DscItemPosIndexDOS[16] = {
	0x00, 0x01, 0x02, 0x03, 0x02, 0x00, 0x03, 0x01,
	0x03, 0x02, 0x01, 0x00, 0x01, 0x03, 0x00, 0x02
};

static const ByteProvider kEoB2DscItemPosIndexDOSProvider = { ARRAYSIZE(kEoB2DscItemPosIndexDOS), kEoB2DscItemPosIndexDOS };

static const uint16 kEoB2DscItemShpXDOS[18] = {
	0xFFC8, 0xFFF8, 0x0028, 0x0058, 0x0088, 0x00B8, 0x00E8, 0xFFB8,
	0x0008, 0x0058, 0x00A8, 0x00F8, 0xFFD8, 0x0058, 0x00D8, 0xFFA8,
	0x0058, 0x0108
};

static const Uint16Provider kEoB2DscItemShpXDOSProvider = { ARRAYSIZE(kEoB2DscItemShpXDOS), kEoB2DscItemShpXDOS };

static const byte kEoB2DscItemScaleIndexDOS[18] = {
	0xFF, 0xFF, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02,
	0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF,
	0x25, 0x00
};

static const ByteProvider kEoB2DscItemScaleIndexDOSProvider = { ARRAYSIZE(kEoB2DscItemScaleIndexDOS), kEoB2DscItemScaleIndexDOS };

static const byte kEoB2DscItemTileIndexDOS[18] = {
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x09, 0xFF, 0x0B,
	0x0C, 0x0D
};

static const ByteProvider kEoB2DscItemTileIndexDOSProvider = { ARRAYSIZE(kEoB2DscItemTileIndexDOS), kEoB2DscItemTileIndexDOS };

static const byte kEoB2DscItemShapeMapDOS[113] = {
	0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x03, 0x04,
	0x03, 0x05, 0x06, 0x06, 0x12, 0x05, 0x0F, 0x12,
	0x14, 0x08, 0x13, 0x11, 0x15, 0x18, 0x07, 0x07,
	0x07, 0x1F, 0x09, 0x23, 0x09, 0x09, 0x09, 0x09,
	0x08, 0x1C, 0x1C, 0x1A, 0x1B, 0x21, 0x1D, 0x1D,
	0x22, 0x22, 0x22, 0x00, 0x16, 0x00, 0x00, 0x17,
	0x17, 0x17, 0x17, 0x17, 0x22, 0x21, 0x19, 0x23,
	0x10, 0x1E, 0x17, 0x25, 0x17, 0x26, 0x12, 0x21,
	0x17, 0x23, 0x1C, 0x00, 0x20, 0x25, 0x12, 0x18,
	0x1F, 0x07, 0x07, 0x15, 0x15, 0x0F, 0x03, 0x09,
	0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B,
	0x1B, 0x17, 0x17, 0x16, 0x16, 0x21, 0x08, 0x25,
	0x25, 0x25, 0x25, 0x28, 0x03, 0x04, 0x21, 0x00,
	0x17, 0x00, 0x20, 0x24, 0x27, 0x27, 0x1C, 0x27,
	0x00
};

static const ByteProvider kEoB2DscItemShapeMapDOSProvider = { ARRAYSIZE(kEoB2DscItemShapeMapDOS), kEoB2DscItemShapeMapDOS };

static const byte kEoB2DscTelptrShpCoordsDOS[156] = {
	0x0C, 0x07, 0x1A, 0x01, 0x3E, 0x03, 0x0C, 0x1A,
	0x2A, 0x13, 0x40, 0x18, 0x02, 0x2D, 0x16, 0x25,
	0x28, 0x32, 0x36, 0x27, 0x0A, 0x3E, 0x16, 0x49,
	0x3E, 0x44, 0x06, 0x06, 0x2A, 0x04, 0x37, 0x0A,
	0x04, 0x1B, 0x1A, 0x16, 0x37, 0x1D, 0x0E, 0x2A,
	0x1B, 0x35, 0x2E, 0x28, 0x42, 0x30, 0x06, 0x47,
	0x06, 0x47, 0x2D, 0x4C, 0x0A, 0x04, 0x14, 0x00,
	0x2E, 0x01, 0x0C, 0x10, 0x1F, 0x10, 0x2F, 0x10,
	0x12, 0x18, 0x28, 0x1D, 0x01, 0x21, 0x08, 0x2A,
	0x11, 0x32, 0x2F, 0x2E, 0x1F, 0x25, 0x02, 0x02,
	0x01, 0x11, 0x01, 0x2F, 0x08, 0x1E, 0x11, 0x0E,
	0x11, 0x26, 0x1C, 0x01, 0x1E, 0x19, 0x1F, 0x33,
	0x24, 0x11, 0x26, 0x05, 0x28, 0x2B, 0x2F, 0x22,
	0x00, 0x13, 0x05, 0x01, 0x06, 0x08, 0x09, 0x0C,
	0x04, 0x1A, 0x08, 0x1F, 0x12, 0x05, 0x12, 0x15,
	0x16, 0x10, 0x1A, 0x08, 0x1A, 0x1D, 0x0A, 0x00,
	0x0A, 0x00, 0x00, 0x09, 0x00, 0x1E, 0x04, 0x11,
	0x08, 0x16, 0x08, 0x06, 0x10, 0x00, 0x11, 0x0D,
	0x12, 0x20, 0x15, 0x02, 0x14, 0x09, 0x16, 0x1B,
	0x1A, 0x14, 0x1A, 0x14
};

static const ByteProvider kEoB2DscTelptrShpCoordsDOSProvider = { ARRAYSIZE(kEoB2DscTelptrShpCoordsDOS), kEoB2DscTelptrShpCoordsDOS };

static const byte kEoB2PortalSeqDataDOS[126] = {
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
	0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00,
	0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
	0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00,
	0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04,
	0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x03, 0x02,
	0x02, 0x03, 0x01, 0x04, 0x00, 0x02, 0x01, 0x03,
	0x02, 0x04, 0x03, 0x02, 0x04, 0x03, 0x03, 0x04,
	0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
	0x04, 0x04, 0x04, 0x05, 0x04, 0x06, 0x03, 0x07,
	0x02, 0x08, 0x02, 0x08, 0x01, 0x09, 0x01, 0x09,
	0x01, 0x09, 0x00, 0x0A, 0xFF, 0xFF
};

static const ByteProvider kEoB2PortalSeqDataDOSProvider = { ARRAYSIZE(kEoB2PortalSeqDataDOS), kEoB2PortalSeqDataDOS };

static const byte kEoB2DscMonsterFrmOffsTbl1DOS[32] = {
	0x04, 0xFE, 0x01, 0x03, 0x03, 0x04, 0xFE, 0x01,
	0x01, 0x03, 0x04, 0xFE, 0xFE, 0x01, 0x03, 0x04,
	0xFC, 0xFD, 0xFF, 0x02, 0x02, 0xFC, 0xFD, 0xFF,
	0xFF, 0x02, 0xFC, 0xFD, 0xFD, 0xFF, 0x02, 0xFC
};

static const ByteProvider kEoB2DscMonsterFrmOffsTbl1DOSProvider = { ARRAYSIZE(kEoB2DscMonsterFrmOffsTbl1DOS), kEoB2DscMonsterFrmOffsTbl1DOS };

static const byte kEoB2DscMonsterFrmOffsTbl2DOS[32] = {
	0x04, 0xFE, 0x01, 0x03, 0x03, 0x04, 0xFE, 0x01,
	0x01, 0x03, 0x04, 0xFE, 0xFE, 0x01, 0x03, 0x04,
	0x04, 0xFD, 0x01, 0x02, 0x02, 0x04, 0xFD, 0x01,
	0x01, 0x02, 0x04, 0xFD, 0xFD, 0x01, 0x02, 0x04
};

static const ByteProvider kEoB2DscMonsterFrmOffsTbl2DOSProvider = { ARRAYSIZE(kEoB2DscMonsterFrmOffsTbl2DOS), kEoB2DscMonsterFrmOffsTbl2DOS };

static const uint16 kEoB2InvSlotXDOS[27] = {
	0x00E6, 0x0116, 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7,
	0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7, 0x00B5, 0x00C7,
	0x00E1, 0x00E0, 0x00E1, 0x012A, 0x011F, 0x0115, 0x012C, 0x012C,
	0x012C, 0x00E4, 0x00F0
};

static const Uint16Provider kEoB2InvSlotXDOSProvider = { ARRAYSIZE(kEoB2InvSlotXDOS), kEoB2InvSlotXDOS };

static const byte kEoB2InvSlotYDOS[27] = {
	0x74, 0x74, 0x28, 0x28, 0x3A, 0x3A, 0x4C, 0x4C,
	0x5E, 0x5E, 0x70, 0x70, 0x82, 0x82, 0x94, 0x94,
	0x38, 0x4C, 0x60, 0x37, 0x4B, 0x89, 0x5E, 0x70,
	0x82, 0x88, 0x88
};

static const ByteProvider kEoB2InvSlotYDOSProvider = { ARRAYSIZE(kEoB2InvSlotYDOS), kEoB2InvSlotYDOS };

static const uint16 kEoB2SlotValidationFlagsDOS[27] = {
	0x0008, 0x0008, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
	0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
	0x0001, 0x0002, 0x0004, 0x0020, 0x0040, 0x0010, 0xFFFF, 0x0080,
	0x0080, 0x0100, 0x0100
};

static const Uint16Provider kEoB2SlotValidationFlagsDOSProvider = { ARRAYSIZE(kEoB2SlotValidationFlagsDOS), kEoB2SlotValidationFlagsDOS };

static const byte kEoB2ProjectileWeaponTypesDOS[15] = {
	0xFF, 0x01, 0xFF, 0x02, 0x04, 0x03, 0x05, 0x10,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x12
};

static const ByteProvider kEoB2ProjectileWeaponTypesDOSProvider = { ARRAYSIZE(kEoB2ProjectileWeaponTypesDOS), kEoB2ProjectileWeaponTypesDOS };

static const byte kEoB2WandTypesDOS[8] = {
	0x00, 0x11, 0x17, 0x31, 0x0D, 0xFF, 0x04, 0x0C
};

static const ByteProvider kEoB2WandTypesDOSProvider = { ARRAYSIZE(kEoB2WandTypesDOS), kEoB2WandTypesDOS };

static const byte kEoB2DrawObjPosIndexDOS[20] = {
	0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x03,
	0x01, 0x04, 0x02, 0x03, 0x00, 0x01, 0x04, 0x01,
	0x03, 0x00, 0x02, 0x04
};

static const ByteProvider kEoB2DrawObjPosIndexDOSProvider = { ARRAYSIZE(kEoB2DrawObjPosIndexDOS), kEoB2DrawObjPosIndexDOS };

static const byte kEoB2FlightObjFlipIndexDOS[16] = {
	0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
	0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00
};

static const ByteProvider kEoB2FlightObjFlipIndexDOSProvider = { ARRAYSIZE(kEoB2FlightObjFlipIndexDOS), kEoB2FlightObjFlipIndexDOS };

static const byte kEoB2FlightObjShpMapDOS[45] = {
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02,
	0xFF, 0xFF, 0x04, 0xFF, 0x06, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0x00, 0x00, 0x00, 0x00
};

static const ByteProvider kEoB2FlightObjShpMapDOSProvider = { ARRAYSIZE(kEoB2FlightObjShpMapDOS), kEoB2FlightObjShpMapDOS };

static const byte kEoB2FlightObjSclIndexDOS[72] = {
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
	0xFF, 0xFF, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03,
	0xFF, 0xFF, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0xFF,
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
	0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0x01, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01,
	0x01, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};

static const ByteProvider kEoB2FlightObjSclIndexDOSProvider = { ARRAYSIZE(kEoB2FlightObjSclIndexDOS), kEoB2FlightObjSclIndexDOS };

static const uint16 kEoB2TransferPortraitFramesDOS[32] = {
	0x0004, 0x0018, 0x009D, 0x0038, 0x00A2, 0x0018, 0x013C, 0x0039,
	0x0004, 0x0040, 0x009D, 0x0060, 0x00A2, 0x0040, 0x013C, 0x0060,
	0x0004, 0x0068, 0x009D, 0x0089, 0x00A2, 0x0068, 0x013C, 0x0089,
	0x0004, 0x0094, 0x002E, 0x009E, 0x0110, 0x0094, 0x013A, 0x009E
};

static const Uint16Provider kEoB2TransferPortraitFramesDOSProvider = { ARRAYSIZE(kEoB2TransferPortraitFramesDOS), kEoB2TransferPortraitFramesDOS };

static const byte kEoB2TransferConvertTableDOS[49] = {
	0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x05, 0x06,
	0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x0D, 0x00, 0x0E,
	0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x00, 0x00,
	0x17, 0x18, 0x22, 0x24, 0x23, 0x25, 0x26, 0x27,
	0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
	0x31, 0x30, 0x32, 0x33, 0x00, 0x35, 0x34, 0x36,
	0x37
};

static const ByteProvider kEoB2TransferConvertTableDOSProvider = { ARRAYSIZE(kEoB2TransferConvertTableDOS), kEoB2TransferConvertTableDOS };

static const byte kEoB2TransferItemTableDOS[60] = {
	0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01,
	0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
	0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
	0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
	0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01,
	0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01,
	0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00
};

static const ByteProvider kEoB2TransferItemTableDOSProvider = { ARRAYSIZE(kEoB2TransferItemTableDOS), kEoB2TransferItemTableDOS };

static const uint32 kEoB2TransferExpTableDOS[6] = {
	0x000F423F, 0x000B71AF, 0x000DBB9F, 0x0006B6BF, 0x000DBB9F, 0x000DBB9F
};

static const Uint32Provider kEoB2TransferExpTableDOSProvider = { ARRAYSIZE(kEoB2TransferExpTableDOS), kEoB2TransferExpTableDOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData00DOS[5] = {
	{ 0x01,   0, 208,  16,   1,   1,   0,   0,   0,   0 },
	{ 0x01,   0, 208,  16,   1,   1,   0,   0,   0,   0 },
	{ 0x00,   0, 216,  51,   8,   0,   0,   0,   0,   0 },
	{ 0x06,   3,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData00DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData00DOS), kEoB2IntroAnimData00DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData01DOS[5] = {
	{ 0x01,   1, 184,   8,   1,   1,   0,   0,   0,   0 },
	{ 0x01,   1, 184,   8,   1,   1,   0,   0,   0,   0 },
	{ 0x00,   0, 216,  51,   7,   0,   0,   0,   0,   0 },
	{ 0x06,   4,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData01DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData01DOS), kEoB2IntroAnimData01DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData02DOS[5] = {
	{ 0x01,   2, 216,  51,   1,   0,   0,   0,   0,   0 },
	{ 0x01,   2, 216,  51,   1,   0,   0,   0,   0,   0 },
	{ 0x00,   0, 216,  51,  18,   0,   0,   0,   0,   0 },
	{ 0x06,   6,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData02DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData02DOS), kEoB2IntroAnimData02DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData03DOS[4] = {
	{ 0x00,   0,   0,   0,   1,   2,   0,   0,   0,   0 },
	{ 0x06,   3,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x00,   0,   0,   0,   1,   2,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData03DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData03DOS), kEoB2IntroAnimData03DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData04DOS[3] = {
	{ 0x01,   0, 282,   8,   1,   0,   0,   0,   0,   0 },
	{ 0x01,   0, 282,   8,   1,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData04DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData04DOS), kEoB2IntroAnimData04DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData05DOS[4] = {
	{ 0x00,   0,   0,   0,   1,   1,   0,   0,   0,   0 },
	{ 0x00,   0,   0,   0,   1,   1,   0,   0,   0,   0 },
	{ 0x06,   5,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData05DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData05DOS), kEoB2IntroAnimData05DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData06DOS[16] = {
	{ 0x01,  12, 170,  11,   2,   0,   0,   0,   0,   0 },
	{ 0x01,  12, 188,  38,   2,   0,   0,   0,   0,   0 },
	{ 0x01,  12, 203,  63,   2,   0,   0,   0,   0,   0 },
	{ 0x01,  12, 218,  85,   2,   0,   0,   0,   0,   0 },
	{ 0x01,  12, 232, 107,   2,   0,   0,   0,   0,   0 },
	{ 0x06,   9,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x01,   3, 242, 125,   2,   0,   0,   0,   0,   0 },
	{ 0x01,   4, 240, 125,   3,   0,   0,   0,   0,   0 },
	{ 0x01,   5, 238, 124,   3,   0,   0,   0,   0,   0 },
	{ 0x01,   6, 236, 123,   3,   0,   0,   0,   0,   0 },
	{ 0x01,   7, 232, 121,   3,   0,   0,   0,   0,   0 },
	{ 0x01,   8, 226, 120,   4,   0,   0,   0,   0,   0 },
	{ 0x01,   9, 220, 119,   4,   0,   0,   0,   0,   0 },
	{ 0x01,  10, 241, 115,   4,   0,   0,   0,   0,   0 },
	{ 0x01,  11, 241, 115,   4,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData06DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData06DOS), kEoB2IntroAnimData06DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData07DOS[5] = {
	{ 0x01,  12,  54,  17,   2,   0,   0,   0,   0,   0 },
	{ 0x01,  12,  80,  53,   2,   0,   0,   0,   0,   0 },
	{ 0x01,  12, 104,  87,   2,   0,   0,   0,   0,   0 },
	{ 0x01,  12, 130, 124,   2,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData07DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData07DOS), kEoB2IntroAnimData07DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData08DOS[6] = {
	{ 0x01,  12, 112,   8,   2,   0,   0,   0,   0,   0 },
	{ 0x01,  12, 126,  34,   2,   0,   0,   0,   0,   0 },
	{ 0x01,  12, 142,  60,   2,   0,   0,   0,   0,   0 },
	{ 0x01,  12, 170, 109,   2,   0,   0,   0,   0,   0 },
	{ 0x06,   8,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData08DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData08DOS), kEoB2IntroAnimData08DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData09DOS[4] = {
	{ 0x05,   0, 184,  64,   6,   0,  30,   8,   3,  16 },
	{ 0x05,   0, 184,  64,   6,   0,  33,   8,   3,  16 },
	{ 0x05,   0, 184,  64,   6,   0,  36,   8,   3,  16 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData09DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData09DOS), kEoB2IntroAnimData09DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData10DOS[10] = {
	{ 0x05,   0, 184,  64,   0,   0,  30,   8,   3,  16 },
	{ 0x05,   0, 128,  88,   3,   0,  30,  32,   4,  24 },
	{ 0x05,   0, 128,  88,   3,   0,  34,  32,   4,  24 },
	{ 0x05,   0, 184,  64,   0,   0,  33,   8,   3,  16 },
	{ 0x05,   0, 128,  88,   3,   0,  30,  32,   4,  24 },
	{ 0x05,   0, 128,  88,   3,   0,  34,  32,   4,  24 },
	{ 0x05,   0, 184,  64,   0,   0,  36,   8,   3,  16 },
	{ 0x05,   0, 128,  88,   3,   0,  30,  32,   4,  24 },
	{ 0x05,   0, 128,  88,   3,   0,  34,  32,   4,  24 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData10DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData10DOS), kEoB2IntroAnimData10DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData11DOS[16] = {
	{ 0x03,  15,  36,  48,   1,   1,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   2,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   3,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   4,   0,   0,   0,   0 },
	{ 0x06,  11,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   5,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   6,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,  90,   7,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   6,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   5,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   4,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   3,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   2,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   1,   0,   0,   0,   0 },
	{ 0x03,  15,  36,  48,   1,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData11DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData11DOS), kEoB2IntroAnimData11DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData12DOS[3] = {
	{ 0x02,  15,  36,  48,  90,   0,   0,   0,   0,   0 },
	{ 0x07,  15,  36,  48,   0,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData12DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData12DOS), kEoB2IntroAnimData12DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData13DOS[4] = {
	{ 0x06,  10,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 104,  24,   5,   0,   0,   8,  15, 112 },
	{ 0x05,   0, 104,  24,   5,   0,  15,   8,  15, 112 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData13DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData13DOS), kEoB2IntroAnimData13DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData14DOS[6] = {
	{ 0x05,   0, 184,  64,   0,   0,  30,   8,   3,  16 },
	{ 0x05,   0, 104,  72,   5,   0,  10, 120,  10,  64 },
	{ 0x05,   0, 184,  64,   0,   0,  33,   8,   3,  16 },
	{ 0x05,   0, 104,  72,   5,   0,  20, 120,  10,  64 },
	{ 0x05,   0, 184,  64,   0,   0,  36,   8,   3,  16 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData14DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData14DOS), kEoB2IntroAnimData14DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData15DOS[4] = {
	{ 0x05,   0, 104,   0,   8,   0,   0,   0,  13, 200 },
	{ 0x05,   0, 104,   0,   8,   0,  13,   0,  13, 200 },
	{ 0x05,   0, 104,   0,   8,   0,  26,   0,  13, 200 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData15DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData15DOS), kEoB2IntroAnimData15DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData16DOS[11] = {
	{ 0x06, 255,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   9, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 240,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   6, 112,  72,   6,   0,   0,   0,   0,   0 },
	{ 0x02,   1, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   4, 240,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   7, 112,  72,   6,   0,   0,   0,   0,   0 },
	{ 0x02,   2, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   5, 240,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   8, 112,  72,   6,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData16DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData16DOS), kEoB2IntroAnimData16DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData17DOS[12] = {
	{ 0x06, 255,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   9, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 240,  40,   6,   0,   0,   0,   0,   0 },
	{ 0x06,   5,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x00,   0,   0,   0,   1,   3,   0,   0,   0,   0 },
	{ 0x00,   0,   0,   0,   1,   3,   0,   0,   0,   0 },
	{ 0x00,   0,   0,   0,   1,   3,   0,   0,   0,   0 },
	{ 0x02,   1, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   4, 240,  40,   6,   0,   0,   0,   0,   0 },
	{ 0x02,   2, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   5, 240,  40,   6,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData17DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData17DOS), kEoB2IntroAnimData17DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData18DOS[8] = {
	{ 0x06, 255,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   9, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 240,  40,   6,   0,   0,   0,   0,   0 },
	{ 0x02,   1, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   4, 240,  40,   6,   0,   0,   0,   0,   0 },
	{ 0x02,   2, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   5, 240,  40,   6,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData18DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData18DOS), kEoB2IntroAnimData18DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData19DOS[14] = {
	{ 0x06, 255,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,  10, 136,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   9, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 240,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  11, 136,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  12, 136,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   1, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   4, 240,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  13, 136,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  10, 136,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   2, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   5, 240,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  13, 136,  40,   3,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData19DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData19DOS), kEoB2IntroAnimData19DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData20DOS[14] = {
	{ 0x06, 255,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,  11, 136,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   9, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 240,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  10, 136,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  13, 136,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   1, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   4, 240,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  12, 136,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  11, 136,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   2, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   5, 240,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  13, 136,  40,   3,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData20DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData20DOS), kEoB2IntroAnimData20DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData21DOS[14] = {
	{ 0x06, 255,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,  14, 136,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   9, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 240,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  15, 136,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  16, 136,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   1, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   4, 240,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  17, 136,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  14, 136,  40,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   2, 224,  72,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   5, 240,  40,   3,   0,   0,   0,   0,   0 },
	{ 0x02,  17, 136,  40,   3,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData21DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData21DOS), kEoB2IntroAnimData21DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData22DOS[2] = {
	{ 0x05,   0, 104,  32,   0,   0,  10,   0,  10,  96 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData22DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData22DOS), kEoB2IntroAnimData22DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData23DOS[2] = {
	{ 0x05,   0, 104,  32,   3,   0,  20,   0,  10,  96 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData23DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData23DOS), kEoB2IntroAnimData23DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData24DOS[2] = {
	{ 0x05,   0, 104,  32,   0,   0,  30,   0,  10,  96 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData24DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData24DOS), kEoB2IntroAnimData24DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData25DOS[2] = {
	{ 0x05,   0, 104,  32,   0,   0,   0,  96,  10,  96 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData25DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData25DOS), kEoB2IntroAnimData25DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData26DOS[2] = {
	{ 0x05,   0, 104,  32,   3,   0,  10,  96,  10,  96 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData26DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData26DOS), kEoB2IntroAnimData26DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData27DOS[2] = {
	{ 0x05,   0, 104,  32,   0,   0,  20,  96,  10,  96 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData27DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData27DOS), kEoB2IntroAnimData27DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData28DOS[2] = {
	{ 0x05,   0, 104,  32,   0,   0,   0,   0,  10,  96 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData28DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData28DOS), kEoB2IntroAnimData28DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData29DOS[2] = {
	{ 0x05,   0, 104,  32,   3,   0,   0,   0,  10,  96 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData29DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData29DOS), kEoB2IntroAnimData29DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData30DOS[2] = {
	{ 0x05,   0, 104,  32,   4,   0,  10,   0,  10,  96 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData30DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData30DOS), kEoB2IntroAnimData30DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData31DOS[2] = {
	{ 0x05,   0, 104,  32,   8,   0,  20,   0,  10,  96 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData31DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData31DOS), kEoB2IntroAnimData31DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData32DOS[5] = {
	{ 0x06, 255,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 176,  56,   3,   0,  19, 136,   2,   8 },
	{ 0x05,   0, 176,  56,   3,   0,  21, 136,   2,   8 },
	{ 0x05,   0, 176,  56,   3,   0,  23, 136,   2,   8 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData32DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData32DOS), kEoB2IntroAnimData32DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData33DOS[14] = {
	{ 0x06, 255,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 176,  56,   0,   0,  19, 136,   2,   8 },
	{ 0x05,   0, 144,  88,   5,   0,   1, 136,   6,  40 },
	{ 0x05,   0, 176,  56,   0,   0,  21, 136,   2,   8 },
	{ 0x05,   0, 144,  88,   3,   0,   7, 136,   6,  40 },
	{ 0x05,   0, 176,  56,   2,   0,  23, 136,   2,   8 },
	{ 0x05,   0, 144,  88,   3,   0,  13, 136,   6,  40 },
	{ 0x05,   0, 176,  56,   0,   0,  19, 136,   2,   8 },
	{ 0x05,   0, 144,  88,   6,   0,   1, 136,   6,  40 },
	{ 0x05,   0, 176,  56,   0,   0,  21, 136,   2,   8 },
	{ 0x05,   0, 144,  88,   3,   0,   7, 136,   6,  40 },
	{ 0x05,   0, 176,  56,   0,   0,  23, 136,   2,   8 },
	{ 0x05,   0, 144,  88,   3,   0,   1, 136,   6,  40 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData33DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData33DOS), kEoB2IntroAnimData33DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData34DOS[8] = {
	{ 0x06, 255,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0,  80,  64,   0,   0,   1, 136,   2,  16 },
	{ 0x05,   0, 248,  64,   3,   0,   7, 136,   2,  16 },
	{ 0x05,   0,  80,  64,   0,   0,   3, 136,   2,  16 },
	{ 0x05,   0, 248,  64,   3,   0,   9, 136,   2,  16 },
	{ 0x05,   0,  80,  64,   0,   0,   5, 136,   2,  16 },
	{ 0x05,   0, 248,  64,   3,   0,  11, 136,   2,  16 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData34DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData34DOS), kEoB2IntroAnimData34DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData35DOS[5] = {
	{ 0x06, 255,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0,  16,  48,   0,   0,   0, 152,  14,  48 },
	{ 0x05,   0, 192,  48,   4,   0,  14, 128,  13,  48 },
	{ 0x05,   0,  16,  48,   0,   0,   1,  40,  35,  48 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData35DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData35DOS), kEoB2IntroAnimData35DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData36DOS[6] = {
	{ 0x06,   1,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 168,  24,   3,   0,   0, 128,   2,  32 },
	{ 0x05,   0, 152,  16,   3,   0,   0,  88,   5,  40 },
	{ 0x05,   0, 128,   0,   3,   0,   0,   0,  10,  88 },
	{ 0x05,   0, 104,   0,   3,   0,  13,   0,  14,  88 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData36DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData36DOS), kEoB2IntroAnimData36DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData37DOS[2] = {
	{ 0x05,   0, 104,   0,   0,   0,  13,   0,  13, 200 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData37DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData37DOS), kEoB2IntroAnimData37DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData38DOS[43] = {
	{ 0x03,  17,  36,  48,   0,   1,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   1,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   1,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   2,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   2,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   2,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   3,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   3,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   3,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   4,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   4,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   4,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   5,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   5,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   5,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   6,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   6,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   6,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   7,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   7,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,  54,   7,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   6,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   6,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   6,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   5,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   5,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   5,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   4,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   4,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   4,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   3,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   3,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   3,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   2,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   2,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   2,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   1,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   1,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   1,   0,   0,   0,   0 },
	{ 0x03,  17,  36,  48,   0,   0,   0,   0,   0,   0 },
	{ 0x03,  16, 142,  80,   0,   0,   0,   0,   0,   0 },
	{ 0x03,  19, 151,  28,   1,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData38DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData38DOS), kEoB2IntroAnimData38DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData39DOS[7] = {
	{ 0x02,  17,  36,  48,   0,   0,   0,   0,   0,   0 },
	{ 0x02,  16, 142,  80,   0,   0,   0,   0,   0,   0 },
	{ 0x02,  19, 151,  28,  54,   0,   0,   0,   0,   0 },
	{ 0x07,  17,  36,  48,   0,   0,   0,   0,   0,   0 },
	{ 0x07,  16, 142,  80,   0,   0,   0,   0,   0,   0 },
	{ 0x07,  19, 151,  28,   0,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData39DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData39DOS), kEoB2IntroAnimData39DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData40DOS[32] = {
	{ 0x03,  22,  21,  32,   0,   1,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   1,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   2,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   1,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   3,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   2,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   4,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   3,   0,   0,   0,   0 },
	{ 0x06,  11,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   5,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   4,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   6,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   5,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   7,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,  18,   6,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   7,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,  90,   6,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   6,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   5,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   5,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   4,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   4,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   3,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   3,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   2,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   2,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   1,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   1,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   1,   0,   0,   0,   0 },
	{ 0x03,  22,  21,  32,   0,   0,   0,   0,   0,   0 },
	{ 0x03,  23,  67,  80,   1,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData40DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData40DOS), kEoB2IntroAnimData40DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData41DOS[5] = {
	{ 0x02,  22,  21,  32,   0,   0,   0,   0,   0,   0 },
	{ 0x02,  23,  67,  80,  90,   0,   0,   0,   0,   0 },
	{ 0x07,  22,  21,  32,   0,   0,   0,   0,   0,   0 },
	{ 0x07,  23,  67,  80,   0,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData41DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData41DOS), kEoB2IntroAnimData41DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData42DOS[3] = {
	{ 0x06,   3,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x00,   0,   0,   0,   1,   2,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData42DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData42DOS), kEoB2IntroAnimData42DOS };

static const DarkMoonAnimCommand kEoB2IntroAnimData43DOS[5] = {
	{ 0x06,   5,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x00,   0,   0,   0,   1,   3,   0,   0,   0,   0 },
	{ 0x00,   0,   0,   0,   1,   3,   0,   0,   0,   0 },
	{ 0x00,   0,   0,   0,   1,   3,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2IntroAnimData43DOSProvider = { ARRAYSIZE(kEoB2IntroAnimData43DOS), kEoB2IntroAnimData43DOS };

static const DarkMoonShapeDef kEoB2IntroShapes00DOS[15] = {
	{   0,   1, 137,   4,  43 },
	{   1,   5, 137,   4,  54 },
	{   2,   9, 140,   4,   8 },
	{   3,   1, 181,   1,   3 },
	{   4,   9, 154,   1,   3 },
	{   5,   9, 158,   2,   5 },
	{   6,   9, 164,   3,   7 },
	{   7,   9, 172,   3,  11 },
	{   8,   9, 184,   5,  13 },
	{   9,  15, 137,   6,  15 },
	{  10,  15, 153,   2,  21 },
	{  11,  17, 153,   2,  21 },
	{  12,   1, 185,   1,   4 },
	{  13,   1, 190,   1,   1 },
	{   0,   0,   0,   0,   0 }
};

static const DarkMoonShapeDefProvider kEoB2IntroShapes00DOSProvider = { ARRAYSIZE(kEoB2IntroShapes00DOS), kEoB2IntroShapes00DOS };

static const DarkMoonShapeDef kEoB2IntroShapes01DOS[2] = {
	{   0,   1, 137,   1,  16 },
	{   0,   0,   0,   0,   0 }
};

static const DarkMoonShapeDefProvider kEoB2IntroShapes01DOSProvider = { ARRAYSIZE(kEoB2IntroShapes01DOS), kEoB2IntroShapes01DOS };

static const DarkMoonShapeDef kEoB2IntroShapes04DOS[10] = {
	{  15,   2,   0,  32,  14 },
	{  16,   5,  16,   5,   8 },
	{  17,   2,  27,  32,  18 },
	{  18,   0, 140,  35,  10 },
	{  19,  21,  16,   3,   8 },
	{  20,   0,  47,  22,  10 },
	{  21,   0,  59,  31,  10 },
	{  22,   0,  71,  35,  39 },
	{  23,   0, 119,  24,  15 },
	{   0,   0,   0,   0,   0 }
};

static const DarkMoonShapeDefProvider kEoB2IntroShapes04DOSProvider = { ARRAYSIZE(kEoB2IntroShapes04DOS), kEoB2IntroShapes04DOS };

static const DarkMoonShapeDef kEoB2IntroShapes07DOS[18] = {
	{  -9,   1, 136,   6,  40 },
	{  -1,   7, 136,   6,  40 },
	{  -2,  13, 136,   6,  40 },
	{   3,  19, 136,   2,  16 },
	{   4,  21, 136,   2,  16 },
	{   5,  23, 136,   2,  16 },
	{   6,  19, 152,   1,   8 },
	{   7,  20, 152,   1,   8 },
	{   8,  21, 152,   1,   8 },
	{ -10,  25, 136,   2,  16 },
	{ -11,  27, 136,   2,  16 },
	{ -12,  29, 136,   2,  16 },
	{ -13,  31, 136,   2,  16 },
	{ -14,  25, 152,   2,  16 },
	{ -15,  27, 152,   2,  16 },
	{ -16,  29, 152,   2,  16 },
	{ -17,  31, 152,   2,  16 },
	{   0,   0,   0,   0,   0 }
};

static const DarkMoonShapeDefProvider kEoB2IntroShapes07DOSProvider = { ARRAYSIZE(kEoB2IntroShapes07DOS), kEoB2IntroShapes07DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData00DOS[11] = {
	{ 0x06,   4,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 136,   8,   8,   0,   5, 136,  11,  48 },
	{ 0x02,   1, 136,   8,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0,  80,   8,   0,   0,   0, 136,   5,  40 },
	{ 0x06,   5,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 232,  88,   4,   0,   0,  88,   8,  48 },
	{ 0x02,   3,  80,   8,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 232,  88,   4,   0,   8,  88,   8,  48 },
	{ 0x05,   0, 232,  88,   4,   0,  16,  88,   8,  48 },
	{ 0x02,   2, 232,  88,   4,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData00DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData00DOS), kEoB2FinaleAnimData00DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData01DOS[9] = {
	{ 0x06,   4,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 136,   8,  12,   0,   5, 136,  11,  48 },
	{ 0x02,   1, 136,   8,   0,   0,   0,   0,   0,   0 },
	{ 0x06,   5,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 232,  88,   6,   0,   0,  88,   8,  48 },
	{ 0x05,   0, 232,  88,   6,   0,   8,  88,   8,  48 },
	{ 0x05,   0, 232,  88,   6,   0,  16,  88,   8,  48 },
	{ 0x02,   2, 232,  88,   6,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData01DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData01DOS), kEoB2FinaleAnimData01DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData02DOS[4] = {
	{ 0x05,   0, 232, 112,   6,   0,  24, 176,   3,  16 },
	{ 0x05,   0, 232, 112,   6,   0,  27, 176,   3,  16 },
	{ 0x05,   0, 232, 112,   6,   0,  30, 176,   3,  16 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData02DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData02DOS), kEoB2FinaleAnimData02DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData03DOS[6] = {
	{ 0x05,   0,  80,   8,   0,   0,   0, 136,   5,  40 },
	{ 0x05,   0, 232, 112,   3,   0,  24, 176,   3,  16 },
	{ 0x02,   3,  80,   8,   3,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 232, 112,   3,   0,  27, 176,   3,  16 },
	{ 0x05,   0, 232, 112,   3,   0,  30, 176,   3,  16 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData03DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData03DOS), kEoB2FinaleAnimData03DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData04DOS[8] = {
	{ 0x06,   6,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 104,  40,   3,   0,  32,  88,   8,  88 },
	{ 0x05,   0, 104,  40,   3,   0,  32,   0,   8,  88 },
	{ 0x05,   0, 104,  40,   3,   0,  24,   0,   8,  88 },
	{ 0x05,   0, 104,  40,   3,   0,  16,   0,   8,  88 },
	{ 0x05,   0, 104,  40,   3,   0,   0,   0,   8,  88 },
	{ 0x05,   0, 104,  40,   3,   0,  24,  88,   8,  88 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData04DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData04DOS), kEoB2FinaleAnimData04DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData05DOS[7] = {
	{ 0x05,   0, 232, 112,   0,   0,  24, 176,   3,  16 },
	{ 0x05,   0, 128,  40,   4,   0,  33, 176,   2,  16 },
	{ 0x05,   0, 232, 112,   0,   0,  27, 176,   3,  16 },
	{ 0x05,   0, 128,  40,   4,   0,  35, 176,   2,  16 },
	{ 0x05,   0, 232, 112,   0,   0,  30, 176,   3,  16 },
	{ 0x05,   0, 128,  40,   4,   0,  37, 176,   2,  16 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData05DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData05DOS), kEoB2FinaleAnimData05DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData06DOS[2] = {
	{ 0x05,   0, 104,  40,   0,   0,  16, 136,   8,  48 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData06DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData06DOS), kEoB2FinaleAnimData06DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData07DOS[6] = {
	{ 0x05,   0, 208,  80,   4,   0,   0, 128,   6,  56 },
	{ 0x05,   0, 208,  80,   4,   0,   6, 128,   6,  56 },
	{ 0x05,   0, 208,  80,   4,   0,  12, 128,   6,  56 },
	{ 0x05,   0, 208,  80,   4,   0,  18, 128,   6,  56 },
	{ 0x05,   0, 208,  80,   4,   0,  24, 128,   6,  56 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData07DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData07DOS), kEoB2FinaleAnimData07DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData08DOS[3] = {
	{ 0x05,   0, 224,  56,   3,   0,   0, 184,   4,  16 },
	{ 0x05,   0, 224,  56,   0,   0,   4, 184,   4,  16 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData08DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData08DOS), kEoB2FinaleAnimData08DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData09DOS[8] = {
	{ 0x01,   1, -10,  40,   2,   0,   0,   0,   0,   0 },
	{ 0x01,   1,   0,  40,   2,   0,   0,   0,   0,   0 },
	{ 0x01,   1,  10,  40,   2,   0,   0,   0,   0,   0 },
	{ 0x01,   1,  20,  40,   2,   0,   0,   0,   0,   0 },
	{ 0x01,   1,  30,  40,   2,   0,   0,   0,   0,   0 },
	{ 0x01,   1,  40,  40,   2,   0,   0,   0,   0,   0 },
	{ 0x02,   2,  48,  40,   2,   0,   0,   0,   0,   0 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData09DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData09DOS), kEoB2FinaleAnimData09DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData10DOS[14] = {
	{ 0x05,   1,   8,  40,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   1, 280,  96,   0,   0,  24, 160,   4,  40 },
	{ 0x05,   1,  96,  96,   3,   0,  12,  80,   1,  16 },
	{ 0x05,   1,   8,  40,   0,   0,  32,  80,   8,  80 },
	{ 0x05,   1, 280,  96,   0,   0,  28, 160,   4,  40 },
	{ 0x05,   1,  96,  96,   3,   0,  13,  80,   1,  16 },
	{ 0x05,   1,   8,  40,   0,   0,  24,  80,   8,  80 },
	{ 0x05,   1, 280,  96,   0,   0,  32, 160,   4,  40 },
	{ 0x05,   1,  96,  96,   3,   0,  14,  80,   1,  16 },
	{ 0x06,   8,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,  40,  32,   0,   0,   0,  40,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,  12, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   3,   0,   0, 128,  12,  24 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData10DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData10DOS), kEoB2FinaleAnimData10DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData11DOS[18] = {
	{ 0x05,   1,  40,  32,   0,   0,  16,  40,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,  18, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   0,   0,   0, 152,  12,  24 },
	{ 0x05,   1,   8,  40,   0,   0,  24,  80,   8,  80 },
	{ 0x05,   1, 280,  96,   0,   0,  32, 160,   4,  40 },
	{ 0x05,   1,  96,  96,   0,   0,  14,  80,   1,  16 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x05,   1,   8,  40,   0,   0,  24,  80,   8,  80 },
	{ 0x05,   1, 280,  96,   0,   0,  32, 160,   4,  40 },
	{ 0x05,   1,  96,  96,   3,   0,  14,  80,   1,  16 },
	{ 0x05,   1,   8,  40,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   1, 280,  96,   0,   0,  24, 160,   4,  40 },
	{ 0x05,   1,  96,  96,   3,   0,  12,  80,   1,  16 },
	{ 0x05,   1,   8,  40,   0,   0,  16,  80,   8,  80 },
	{ 0x05,   1, 280,  96,   0,   0,  36, 160,   4,  40 },
	{ 0x05,   1,  96,  96,   3,   0,  15,  80,   1,  16 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData11DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData11DOS), kEoB2FinaleAnimData11DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData12DOS[23] = {
	{ 0x05,   1,  40,  32,   0,   0,  16,  40,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,  18, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   0,   0,   0, 152,  12,  24 },
	{ 0x05,   1,   8,  40,   0,   0,  24,  80,   8,  80 },
	{ 0x05,   1, 280,  96,   0,   0,  32, 160,   4,  40 },
	{ 0x05,   1,  96,  96,   0,   0,  14,  80,   1,  16 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   2, 168,  16,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,   8,  40,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   1, 280,  96,   0,   0,  24, 160,   4,  40 },
	{ 0x05,   1,  96,  96,   3,   0,  12,  80,   1,  16 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 168,  16,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,   8,  40,   0,   0,  16,  80,   8,  80 },
	{ 0x05,   1, 280,  96,   0,   0,  36, 160,   4,  40 },
	{ 0x05,   1,  96,  96,   3,   0,  15,  80,   1,  16 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData12DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData12DOS), kEoB2FinaleAnimData12DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData13DOS[23] = {
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   1, 168,  16,   0,   0,   0,   0,   0,   0 },
	{ 0x06,   9,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,  40,  32,   0,   0,   0,   0,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,   0, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   3,   0,   0,  80,  12,  24 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 168,  16,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,  40,  32,   0,   0,  16,   0,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,   6, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   3,   0,   0, 104,  12,  24 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   2, 168,  16,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,  40,  32,   0,   0,   0,  40,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,  12, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   3,   0,   0, 128,  12,  24 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData13DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData13DOS), kEoB2FinaleAnimData13DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData14DOS[24] = {
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   1, 168,  16,   0,   0,   0,   0,   0,   0 },
	{ 0x06,   9,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,  40,  32,   0,   0,   0,   0,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,   0, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   3,   0,   0,  80,  12,  24 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 168,  16,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,  40,  32,   0,   0,  16,   0,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,   6, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   3,   0,   0, 104,  12,  24 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   2, 168,  16,   0,   0,   0,   0,   0,   0 },
	{ 0x06,   9,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,  40,  32,   0,   0,   0,  40,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,  12, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   3,   0,   0, 128,  12,  24 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData14DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData14DOS), kEoB2FinaleAnimData14DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData15DOS[19] = {
	{ 0x05,   1,  40,  32,   0,   0,   0,   0,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,   0, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   3,   0,   0,  80,  12,  24 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 168,  16,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,  40,  32,   0,   0,  16,   0,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,   6, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   3,   0,   0, 104,  12,  24 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x06,   9,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   1,  40,  32,   0,   0,   0,  40,  16,  40 },
	{ 0x05,   1, 248,  88,   0,   0,  12, 176,   6,  24 },
	{ 0x05,   1,  96,  80,   3,   0,   0, 128,  12,  24 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData15DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData15DOS), kEoB2FinaleAnimData15DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData16DOS[13] = {
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   1, 168,  16,   3,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   2, 168,  16,   3,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0x06,  15,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x02,   3, 168,  16,   3,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 168,  16,   0,   0,  32,   0,   8,  80 },
	{ 0x05,   0, 232,  16,   0,   0,  32,  80,   8,  80 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData16DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData16DOS), kEoB2FinaleAnimData16DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData17DOS[20] = {
	{ 0x05,   0, 168,  16,   1,   0,   0,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,   0,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,   0,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,   0,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,  16,   0,  16,  80 },
	{ 0x06,  10,   0,   0,   0,   0,   0,   0,   0,   0 },
	{ 0x05,   0, 168,  16,   3,   0,   0,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,  16,   0,  16,  80 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData17DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData17DOS), kEoB2FinaleAnimData17DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData18DOS[28] = {
	{ 0x05,   0, 168,  16,   1,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,  16,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,  16,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,  16,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,   0,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,   0,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,  16,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,  16,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,  16,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   3,   0,  16,   0,  16,  80 },
	{ 0x05,   0, 168,  16,   1,   0,   0,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   2,   0,  16,  80,  16,  80 },
	{ 0x05,   0, 168,  16,   0,   0,  16,  80,  16,  80 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData18DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData18DOS), kEoB2FinaleAnimData18DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData19DOS[7] = {
	{ 0x05,   0,  80,  80,   4,   0,   0, 128,   6,  56 },
	{ 0x05,   0,  80,  80,   4,   0,   6, 128,   6,  56 },
	{ 0x05,   0,  80,  80,   4,   0,  12, 128,   6,  56 },
	{ 0x05,   0,  80,  80,   4,   0,  18, 128,   6,  56 },
	{ 0x05,   0,  80,  80,   4,   0,  24, 128,   6,  56 },
	{ 0x05,   0,  80,  80,   4,   0,  30, 128,   6,  56 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData19DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData19DOS), kEoB2FinaleAnimData19DOS };

static const DarkMoonAnimCommand kEoB2FinaleAnimData20DOS[3] = {
	{ 0x05,   0,  96,  56,   3,   0,   0, 184,   4,  16 },
	{ 0x05,   0,  96,  56,   0,   0,   4, 184,   4,  16 },
	{ 0xFF,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
};

static const DarkMoonAnimCommandProvider kEoB2FinaleAnimData20DOSProvider = { ARRAYSIZE(kEoB2FinaleAnimData20DOS), kEoB2FinaleAnimData20DOS };

static const DarkMoonShapeDef kEoB2FinaleShapes00DOS[4] = {
	{  -1,  16,   0,  11,  48 },
	{  -2,  28,  80,   8,  48 },
	{  -3,   9,   0,   5,  40 },
	{   0,   0,   0,   0,   0 }
};

static const DarkMoonShapeDefProvider kEoB2FinaleShapes00DOSProvider = { ARRAYSIZE(kEoB2FinaleShapes00DOS), kEoB2FinaleShapes00DOS };

static const DarkMoonShapeDef kEoB2FinaleShapes03DOS[3] = {
	{  -1,  30,   0,   8,  96 },
	{  -2,  30, 104,  10,  96 },
	{   0,   0,   0,   0,   0 }
};

static const DarkMoonShapeDefProvider kEoB2FinaleShapes03DOSProvider = { ARRAYSIZE(kEoB2FinaleShapes03DOS), kEoB2FinaleShapes03DOS };

static const DarkMoonShapeDef kEoB2FinaleShapes07DOS[4] = {
	{   1,   0,   0,  16,  72 },
	{   2,  16,   0,  16,  72 },
	{   3,   0,  72,  16,  72 },
	{   0,   0,   0,   0,   0 }
};

static const DarkMoonShapeDefProvider kEoB2FinaleShapes07DOSProvider = { ARRAYSIZE(kEoB2FinaleShapes07DOS), kEoB2FinaleShapes07DOS };

static const DarkMoonShapeDef kEoB2FinaleShapes09DOS[9] = {
	{   0,   0,   0,  32,  16 },
	{   2,   0,  36,  35,  41 },
	{   3,   0,  77,  24,  17 },
	{   4,   0,  94,  15,  33 },
	{   5,  24,  77,  10,  17 },
	{   6,  16,  99,  23,  69 },
	{ -10,   0, 136,   8,  64 },
	{ -11,   8, 136,   8,  64 },
	{   0,   0,   0,   0,   0 }
};

static const DarkMoonShapeDefProvider kEoB2FinaleShapes09DOSProvider = { ARRAYSIZE(kEoB2FinaleShapes09DOS), kEoB2FinaleShapes09DOS };

static const DarkMoonShapeDef kEoB2FinaleShapes10DOS[4] = {
	{   1,   0,   0,  40,  30 },
	{  15,   9,  37,  21,  48 },
	{  16,  16,  88,   6,  56 },
	{   0,   0,   0,   0,   0 }
};

static const DarkMoonShapeDefProvider kEoB2FinaleShapes10DOSProvider = { ARRAYSIZE(kEoB2FinaleShapes10DOS), kEoB2FinaleShapes10DOS };

static const byte kEoB2NpcShapeDataDOS[24] = {
	0x00, 0x00, 0x00, 0x05, 0x39, 0x00, 0x00, 0xFF,
	0x00, 0x00, 0x64, 0x05, 0x4F, 0x00, 0x00, 0xFF,
	0x00, 0x00, 0x39, 0x06, 0x2B, 0x00, 0x00, 0xFF
};

static const ByteProvider kEoB2NpcShapeDataDOSProvider = { ARRAYSIZE(kEoB2NpcShapeDataDOS), kEoB2NpcShapeDataDOS };

static const byte kEoB2ClassModifierFlagsDOS[15] = {
	0x01, 0x20, 0x10, 0x02, 0x04, 0x08, 0x05, 0x09,
	0x03, 0x0B, 0x0A, 0x0C, 0x07, 0x05, 0x06
};

static const ByteProvider kEoB2ClassModifierFlagsDOSProvider = { ARRAYSIZE(kEoB2ClassModifierFlagsDOS), kEoB2ClassModifierFlagsDOS };

static const byte kEoB2MonsterStepTable02DOS[8] = {
	0xE0, 0xE1, 0x01, 0x21, 0x20, 0x1F, 0xFF, 0xDF
};

static const ByteProvider kEoB2MonsterStepTable02DOSProvider = { ARRAYSIZE(kEoB2MonsterStepTable02DOS), kEoB2MonsterStepTable02DOS };

static const byte kEoB2MonsterStepTable1DOS[16] = {
	0x01, 0xE0, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00,
	0x00, 0x00, 0xFF, 0x20, 0xFF, 0x00, 0x00, 0xE0
};

static const ByteProvider kEoB2MonsterStepTable1DOSProvider = { ARRAYSIZE(kEoB2MonsterStepTable1DOS), kEoB2MonsterStepTable1DOS };

static const byte kEoB2MonsterStepTable2DOS[8] = {
	0x07, 0xFA, 0x05, 0xFC, 0x03, 0xFE, 0x01, 0x00
};

static const ByteProvider kEoB2MonsterStepTable2DOSProvider = { ARRAYSIZE(kEoB2MonsterStepTable2DOS), kEoB2MonsterStepTable2DOS };

static const byte kEoB2MonsterStepTable3DOS[8] = {
	0xF9, 0x06, 0xFB, 0x04, 0xFD, 0x02, 0xFF, 0x00
};

static const ByteProvider kEoB2MonsterStepTable3DOSProvider = { ARRAYSIZE(kEoB2MonsterStepTable3DOS), kEoB2MonsterStepTable3DOS };

static const byte kEoB2MonsterCloseAttPosTable1DOS[4] = {
	0x00, 0x01, 0x03, 0x02
};

static const ByteProvider kEoB2MonsterCloseAttPosTable1DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttPosTable1DOS), kEoB2MonsterCloseAttPosTable1DOS };

static const byte kEoB2MonsterCloseAttPosTable22DOS[16] = {
	0x00, 0x01, 0x02, 0x03, 0x00, 0x02, 0x01, 0x03,
	0x00, 0x01, 0x02, 0x03, 0x03, 0x01, 0x02, 0x00
};

static const ByteProvider kEoB2MonsterCloseAttPosTable22DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttPosTable22DOS), kEoB2MonsterCloseAttPosTable22DOS };

static const byte kEoB2MonsterCloseAttUnkTableDOS[12] = {
	0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0x00, 0x02, 0xFF, 0x01
};

static const ByteProvider kEoB2MonsterCloseAttUnkTableDOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttUnkTableDOS), kEoB2MonsterCloseAttUnkTableDOS };

static const byte kEoB2MonsterCloseAttChkTable1DOS[16] = {
	0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
	0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00
};

static const ByteProvider kEoB2MonsterCloseAttChkTable1DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttChkTable1DOS), kEoB2MonsterCloseAttChkTable1DOS };

static const byte kEoB2MonsterCloseAttChkTable2DOS[16] = {
	0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
	0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00
};

static const ByteProvider kEoB2MonsterCloseAttChkTable2DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttChkTable2DOS), kEoB2MonsterCloseAttChkTable2DOS };

static const byte kEoB2MonsterCloseAttDstTable1DOS[16] = {
	0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
	0x00, 0x01, 0x02, 0x03, 0x03, 0x00, 0x01, 0x02
};

static const ByteProvider kEoB2MonsterCloseAttDstTable1DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttDstTable1DOS), kEoB2MonsterCloseAttDstTable1DOS };

static const byte kEoB2MonsterCloseAttDstTable2DOS[48] = {
	0x01, 0x00, 0x03, 0x02, 0x05, 0x04, 0x00, 0x01,
	0x02, 0x03, 0x04, 0x05, 0x05, 0x03, 0x01, 0x04,
	0x02, 0x00, 0x01, 0x03, 0x05, 0x00, 0x02, 0x04,
	0x04, 0x05, 0x02, 0x03, 0x00, 0x01, 0x05, 0x04,
	0x03, 0x02, 0x01, 0x00, 0x00, 0x02, 0x04, 0x01,
	0x03, 0x05, 0x04, 0x02, 0x00, 0x05, 0x03, 0x01
};

static const ByteProvider kEoB2MonsterCloseAttDstTable2DOSProvider = { ARRAYSIZE(kEoB2MonsterCloseAttDstTable2DOS), kEoB2MonsterCloseAttDstTable2DOS };

static const byte kEoB2MonsterProximityTableDOS[32] = {
	0x02, 0x03, 0x00, 0x01, 0x03, 0x02, 0x01, 0x00,
	0x00, 0x02, 0x01, 0x03, 0x02, 0x00, 0x03, 0x01,
	0x01, 0x00, 0x03, 0x02, 0x00, 0x01, 0x02, 0x03,
	0x03, 0x01, 0x00, 0x02, 0x01, 0x03, 0x02, 0x00
};

static const ByteProvider kEoB2MonsterProximityTableDOSProvider = { ARRAYSIZE(kEoB2MonsterProximityTableDOS), kEoB2MonsterProximityTableDOS };

static const byte kEoB2FindBlockMonstersTableDOS[64] = {
	0x04, 0x02, 0x01, 0x03, 0x04, 0x03, 0x00, 0x02,
	0x04, 0x00, 0x03, 0x01, 0x04, 0x01, 0x02, 0x00,
	0x04, 0x01, 0x02, 0x03, 0x04, 0x00, 0x03, 0x02,
	0x04, 0x03, 0x00, 0x01, 0x04, 0x02, 0x01, 0x00,
	0x04, 0x02, 0x01, 0x03, 0x04, 0x03, 0x00, 0x02,
	0x04, 0x00, 0x03, 0x01, 0x04, 0x01, 0x02, 0x00,
	0x04, 0x01, 0x02, 0x03, 0x04, 0x00, 0x03, 0x02,
	0x04, 0x03, 0x00, 0x01, 0x04, 0x02, 0x01, 0x00
};

static const ByteProvider kEoB2FindBlockMonstersTableDOSProvider = { ARRAYSIZE(kEoB2FindBlockMonstersTableDOS), kEoB2FindBlockMonstersTableDOS };

static const byte kEoB2MonsterDirChangeTableDOS[48] = {
	0xFF, 0x06, 0x02, 0xFF, 0x04, 0x05, 0x03, 0xFF,
	0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xDF, 0xFF, 0xE0, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF,
	0x01, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00,
	0xC0, 0xFF, 0xA0, 0xFF, 0x02, 0x00, 0x03, 0x00,
	0x40, 0x00, 0x60, 0x00, 0xFE, 0xFF, 0xFD, 0xFF
};

static const ByteProvider kEoB2MonsterDirChangeTableDOSProvider = { ARRAYSIZE(kEoB2MonsterDirChangeTableDOS), kEoB2MonsterDirChangeTableDOS };

static const uint16 kEoB2EncodeMonsterDefsDOS[168] = {
	0x0000, 0x0000, 0x0007, 0x0060, 0x0007, 0x0028, 0x000C, 0x0038,
	0x0013, 0x0028, 0x000C, 0x0038, 0x001F, 0x0000, 0x0007, 0x0060,
	0x0000, 0x0060, 0x0007, 0x0060, 0x0007, 0x0060, 0x0007, 0x0060,
	0x000E, 0x0060, 0x0005, 0x0038, 0x0007, 0x0000, 0x0007, 0x0028,
	0x000E, 0x0000, 0x0007, 0x0028, 0x0013, 0x0060, 0x0005, 0x0038,
	0x0018, 0x0060, 0x0005, 0x0038, 0x001D, 0x0060, 0x0005, 0x0038,
	0x000E, 0x0098, 0x0003, 0x0020, 0x0011, 0x00A0, 0x0004, 0x0018,
	0x0015, 0x00A0, 0x0004, 0x0018, 0x0019, 0x0098, 0x0003, 0x0020,
	0x001C, 0x0098, 0x0003, 0x0020, 0x001F, 0x0098, 0x0003, 0x0020,
	0x0000, 0x0000, 0x0007, 0x0060, 0x0007, 0x0000, 0x0007, 0x0060,
	0x000E, 0x0000, 0x0007, 0x0060, 0x0015, 0x0000, 0x0007, 0x0060,
	0x001C, 0x0000, 0x0007, 0x0060, 0x0000, 0x0060, 0x0007, 0x0060,
	0x0007, 0x0060, 0x0005, 0x0038, 0x000C, 0x0060, 0x0005, 0x0038,
	0x0011, 0x0060, 0x0005, 0x0038, 0x0016, 0x0060, 0x0005, 0x0038,
	0x001B, 0x0060, 0x0005, 0x0038, 0x0020, 0x0060, 0x0005, 0x0038,
	0x0007, 0x0098, 0x0003, 0x0020, 0x000A, 0x0098, 0x0003, 0x0020,
	0x000D, 0x0098, 0x0003, 0x0020, 0x0010, 0x0098, 0x0003, 0x0020,
	0x0013, 0x0098, 0x0003, 0x0020, 0x0016, 0x0098, 0x0003, 0x0020,
	0x0000, 0x0000, 0x000A, 0x0058, 0x000A, 0x0000, 0x000A, 0x0058,
	0x0014, 0x0000, 0x000A, 0x0058, 0x001E, 0x0000, 0x000A, 0x0058,
	0x0000, 0x0058, 0x000A, 0x0058, 0x000A, 0x0058, 0x000A, 0x0058
};

static const Uint16Provider kEoB2EncodeMonsterDefsDOSProvider = { ARRAYSIZE(kEoB2EncodeMonsterDefsDOS), kEoB2EncodeMonsterDefsDOS };

static const EoBCharacter kEoB2NpcPresetsDOS[6] = {
	{ 0x00, 0x01, "Insal",
	  15, 15,  0,  0, 13, 13, 11, 11, 17, 17, 16, 16,  9,  9,
	     3,   39, 10, 0, 10, 5, 5, -1, 8, { 6, 0, 0 },
	  { 0x00006ADA, 0x00000000, 0x00000000 }, 0x00000000,
	  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000 } },
	{ 0x00, 0x01, "Calandra",
	  18, 18, 36, 36, 13, 13,  8,  8, 15, 15, 16, 16, 14, 14,
	     4,   76, 10, 0, 1, 0, 2, -2, 12, { 9, 0, 0 },
	  { 0x0003DF35, 0x00000000, 0x00000000 }, 0x00000000,
	  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000 } },
	{ 0x00, 0x01, "Shorn",
	  15, 15,  0,  0, 14, 14, 13, 13, 14, 14, 13, 13, 16, 16,
	    40,   40, 10, 0, 6, 4, 3, -3, 100, { 8, 0, 0 },
	  { 0x00021730, 0x00000000, 0x00000000 }, 0x00000000,
	  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000 } },
	{ 0x00, 0x01, "San-raal",
	  11, 11,  0,  0, 18, 18, 13, 13, 14, 14, 16, 16,  9,  9,
	    28,   28, 10, 0, 2, 3, 5, -4, 100, { 8, 0, 0 },
	  { 0x00017AF0, 0x00000000, 0x00000000 }, 0x096B4566,
	  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000 } },
	{ 0x00, 0x01, "Tanglor",
	  16, 16,  0,  0, 13, 13, 16, 16, 15, 15, 11, 11, 12, 12,
	    53,   53,  9, 0, 4, 6, 1, -5, 100, { 7, 7, 0 },
	  { 0x00010FC2, 0x00010FC2, 0x00000000 }, 0xFFFFFFFF,
	  { 0x0004, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0024, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000 } },
	{ 0x00, 0x01, "Amber",
	  14, 14,  0,  0, 17, 17, 12, 12, 18, 18,  9,  9, 17, 17,
	    36,   36, 10, 0, 3, 10, 1, -6, 100, { 7, 7, 0 },
	  { 0x0000FAE6, 0x0000FAE6, 0x00000000 }, 0x00294566,
	  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
	    0x0000, 0x0000, 0x0000 } }
};

static const EoBCharacterProvider kEoB2NpcPresetsDOSProvider = { ARRAYSIZE(kEoB2NpcPresetsDOS), kEoB2NpcPresetsDOS };

static const byte kEoB2DreamStepsDOS[14] = {
	0x01, 0x02, 0x03, 0x02, 0x01, 0x00, 0x01, 0x02,
	0x03, 0x03, 0x02, 0x01, 0x00, 0xFF
};

static const ByteProvider kEoB2DreamStepsDOSProvider = { ARRAYSIZE(kEoB2DreamStepsDOS), kEoB2DreamStepsDOS };

static const byte kEoB2HornSoundsDOS[4] = {
	0x40, 0x41, 0x42, 0x43
};

static const ByteProvider kEoB2HornSoundsDOSProvider = { ARRAYSIZE(kEoB2HornSoundsDOS), kEoB2HornSoundsDOS };

static const uint16 kEoB2WallOfForceDsXDOS[18] = {
	0xFFCC, 0xFFF4, 0x001C, 0x0044, 0x006C, 0x0094, 0x00BC, 0xFFB8,
	0xFFF8, 0x0038, 0x0078, 0x00B8, 0xFFC8, 0x0028, 0x0088, 0x0000,
	0x0000, 0x0000
};

static const Uint16Provider kEoB2WallOfForceDsXDOSProvider = { ARRAYSIZE(kEoB2WallOfForceDsXDOS), kEoB2WallOfForceDsXDOS };

static const byte kEoB2WallOfForceDsYDOS[3] = {
	0x20, 0x18, 0x10
};

static const ByteProvider kEoB2WallOfForceDsYDOSProvider = { ARRAYSIZE(kEoB2WallOfForceDsYDOS), kEoB2WallOfForceDsYDOS };

static const byte kEoB2WallOfForceNumWDOS[3] = {
	0x01, 0x02, 0x03
};

static const ByteProvider kEoB2WallOfForceNumWDOSProvider = { ARRAYSIZE(kEoB2WallOfForceNumWDOS), kEoB2WallOfForceNumWDOS };

static const byte kEoB2WallOfForceNumHDOS[3] = {
	0x02, 0x06, 0x09
};

static const ByteProvider kEoB2WallOfForceNumHDOSProvider = { ARRAYSIZE(kEoB2WallOfForceNumHDOS), kEoB2WallOfForceNumHDOS };

static const byte kEoB2WallOfForceShpIdDOS[3] = {
	0x04, 0x02, 0x00
};

static const ByteProvider kEoB2WallOfForceShpIdDOSProvider = { ARRAYSIZE(kEoB2WallOfForceShpIdDOS), kEoB2WallOfForceShpIdDOS };

static const byte kEoB2DscShapeIndexDOS[36] = {
	0x01, 0x01, 0x04, 0x0A, 0x04, 0x08, 0x04, 0x01,
	0x04, 0xF8, 0x04, 0xF6, 0x00, 0x00, 0x03, 0x09,
	0x03, 0x07, 0x03, 0x01, 0x03, 0xF9, 0x03, 0xF7,
	0x02, 0x06, 0x02, 0x01, 0x02, 0xFA, 0x01, 0x05,
	0x01, 0x01, 0x01, 0xFB
};

static const ByteProvider kEoB2DscShapeIndexDOSProvider = { ARRAYSIZE(kEoB2DscShapeIndexDOS), kEoB2DscShapeIndexDOS };

static const uint16 kEoB2DscXDOS[18] = {
	0xFF70, 0xFFA0, 0xFFD0, 0x0000, 0x0030, 0x0060, 0x0090, 0xFF60,
	0xFFB0, 0x0000, 0x0050, 0x00A0, 0xFF80, 0x0000, 0x0080, 0x0000,
	0x0000, 0x0000
};

static const Uint16Provider kEoB2DscXDOSProvider = { ARRAYSIZE(kEoB2DscXDOS), kEoB2DscXDOS };

static const byte kEoB2DscTileIndexDOS[18] = {
	0x00, 0x06, 0x01, 0x05, 0x02, 0x04, 0x03, 0x07,
	0x0B, 0x08, 0x0A, 0x09, 0x0C, 0x0E, 0x0D, 0x0F,
	0x11, 0x10
};

static const ByteProvider kEoB2DscTileIndexDOSProvider = { ARRAYSIZE(kEoB2DscTileIndexDOS), kEoB2DscTileIndexDOS };

static const byte kEoB2DscDimData1DOS[324] = {
	0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
	0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
	0xD8, 0xD7, 0xD8, 0xD8, 0x02, 0xD8, 0xD8, 0xD8,
	0xD8, 0xFE, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0x03,
	0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xFE, 0xD8, 0x08,
	0xD8, 0xD8, 0xD8, 0xFE, 0xD7, 0x06, 0xD8, 0xD8,
	0xFA, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFA, 0xD7,
	0x10, 0xD8, 0xFD, 0xD7, 0x13, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xF2, 0xD8, 0x14, 0xD8, 0xD8,
	0xD8, 0xF0, 0xD7, 0x14, 0xD8, 0xED, 0x10, 0xD8,
	0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xEC, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0x14, 0xD8, 0xED,
	0xD7, 0xD8, 0xD8, 0x13, 0xD7, 0xD7, 0xD7, 0xD7,
	0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
	0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7, 0xD7, 0xD7,
	0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
	0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0x06, 0xD8, 0xD8, 0xFA, 0x03, 0xD8, 0xFD,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xFA, 0xD8, 0x10, 0xD8, 0xFD, 0xD7,
	0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8,
	0xD8, 0xED, 0x10, 0xD8, 0xD8, 0x13, 0xD7, 0xD7,
	0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
	0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x03, 0xD8, 0xFD,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFD, 0xD8,
	0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xED, 0xD8, 0xD8, 0xD8, 0x13, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
	0xD8, 0xD8, 0xD8, 0xD8
};

static const ByteProvider kEoB2DscDimData1DOSProvider = { ARRAYSIZE(kEoB2DscDimData1DOS), kEoB2DscDimData1DOS };

static const byte kEoB2DscDimData2DOS[648] = {
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x02, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x02, 0x16, 0x00, 0x04, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x16, 0x00, 0x00, 0x03,
	0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x02, 0x16, 0x00, 0x16, 0x00, 0x08,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02,
	0x16, 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
	0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x00,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x08, 0x0E,
	0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x06, 0x10,
	0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x0E, 0x16,
	0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x10, 0x16, 0x16, 0x00, 0x00, 0x14,
	0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x14, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x12, 0x16, 0x14, 0x16, 0x00, 0x16, 0x13, 0x16,
	0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x00, 0x16, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16,
	0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x16,
	0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x07, 0x0F,
	0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x10, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x13, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00,
	0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16,
	0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16,
	0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16
};

static const ByteProvider kEoB2DscDimData2DOSProvider = { ARRAYSIZE(kEoB2DscDimData2DOS), kEoB2DscDimData2DOS };

static const byte kEoB2DscBlockMapDOS[12] = {
	0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00,
	0x03, 0x00, 0x01, 0x02
};

static const ByteProvider kEoB2DscBlockMapDOSProvider = { ARRAYSIZE(kEoB2DscBlockMapDOS), kEoB2DscBlockMapDOS };

static const byte kEoB2DscDimMapDOS[18] = {
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
	0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03,
	0x03, 0x03
};

static const ByteProvider kEoB2DscDimMapDOSProvider = { ARRAYSIZE(kEoB2DscDimMapDOS), kEoB2DscDimMapDOS };

static const byte kEoB2DscBlockIndexDOS[72] = {
	0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xBE,
	0xBF, 0xC0, 0xC1, 0xC2, 0xDF, 0xE0, 0xE1, 0xFF,
	0x00, 0x01, 0xA3, 0xC3, 0xE3, 0x03, 0x23, 0x43,
	0x63, 0xC2, 0xE2, 0x02, 0x22, 0x42, 0xE1, 0x01,
	0x21, 0xE0, 0x00, 0x20, 0x63, 0x62, 0x61, 0x60,
	0x5F, 0x5E, 0x5D, 0x42, 0x41, 0x40, 0x3F, 0x3E,
	0x21, 0x20, 0x1F, 0x01, 0x00, 0xFF, 0x5D, 0x3D,
	0x1D, 0xFD, 0xDD, 0xBD, 0x9D, 0x3E, 0x1E, 0xFE,
	0xDE, 0xBE, 0x1F, 0xFF, 0xDF, 0x20, 0x00, 0xE0
};

static const ByteProvider kEoB2DscBlockIndexDOSProvider = { ARRAYSIZE(kEoB2DscBlockIndexDOS), kEoB2DscBlockIndexDOS };

static const char *const kEoB2SoundFilesIntroDOS[1] = {
	"INTRO"
};

static const StringListProvider kEoB2SoundFilesIntroDOSProvider = { ARRAYSIZE(kEoB2SoundFilesIntroDOS), kEoB2SoundFilesIntroDOS };

static const char *const kEoB2SoundFilesFinaleDOS[2] = {
	"FINALE1",
	"FINALE2"
};

static const StringListProvider kEoB2SoundFilesFinaleDOSProvider = { ARRAYSIZE(kEoB2SoundFilesFinaleDOS), kEoB2SoundFilesFinaleDOS };